Python Funciones
Una función es un bloque de código que sólo se ejecuta cuando se llama.
Puedes pasar datos, conocidos como parámetros, a una función.
Una función puede devolver datos como resultado.
Creando una función
En Python, una función se define usando la palabra clave def:
Ejemplo
def my_function():
print("Hola desde una funcion")
Llamar a una función
Para llamar a una función, use el nombre de la función seguido de paréntesis:
Argumentos
La información se puede pasar a funciones como argumentos.
Los argumentos se especifican después del nombre de la función, dentro del paréntesis. Puedes agregar tantos argumentos como quieras, simplemente sepáralos con una coma.
El siguiente ejemplo tiene una función con un argumento (fname). Cuando se llama a la función, pasamos un nombre, que se usa dentro de la función para imprimir el nombre completo:
Ejemplo
def my_function(fname):
print(fname + " Refsnes")
my_function("Emil")
my_function("Tobias")
my_function("Linus")
Inténtalo tú mismo »
Los argumentos a menudo se abrevian a args en la documentación de Python.
¿Parámetros o argumentos?
Los términos parámetro y argumento se pueden usar para lo mismo: información que se pasa a una función.
Desde la perspectiva de una función:
Un parámetro es la variable que figura entre paréntesis en la definición de la función.
Un argumento es el valor que se envía a la función cuando se llama.
Número de argumentos
De forma predeterminada, se debe llamar a una función con el número correcto de argumentos. Lo que significa que si su función espera 2 argumentos, debe llamar a la función con 2 argumentos, ni más ni menos.
Ejemplo
Esta función espera 2 argumentos y obtiene 2 argumentos:
def my_function(fname, lname):
print(fname + " " + lname)
my_function("Emil", "Refsnes")
Inténtalo tú mismo »
Si intenta llamar a la función con 1 o 3 argumentos, obtendrá un error:
Ejemplo
Esta función espera 2 argumentos, pero solo obtiene 1:
def my_function(fname, lname):
print(fname + " " + lname)
my_function("Emil")
Inténtalo tú mismo »
Argumentos arbitrarios, *args
Si no sabe cuántos argumentos se pasarán a su función, agregue un *
antes del nombre del parámetro en la definición de la función.
De esta manera la función recibirá una tupla de argumentos y podrá acceder a los elementos en consecuencia:
Ejemplo
Si se desconoce el número de argumentos, agregue un *
antes del nombre del parámetro:
def my_function(*kids):
print("The youngest child is " + kids[2])
my_function("Emil", "Tobias", "Linus")
Inténtalo tú mismo »
Los argumentos arbitrarios a menudo se abrevian a *args en la documentación de Python.
Argumentos de palabras clave
También puedes enviar argumentos con la sintaxis clave = valor.
De esta manera el orden de los argumentos no importa.
Ejemplo
def my_function(child3, child2, child1):
print("The youngest child is " + child3)
my_function(child1 = "Emil", child2 = "Tobias", child3 = "Linus")
Inténtalo tú mismo »
La frase Argumentos de palabras clave a menudo se abrevia a kwargs en la documentación de Python.
Argumentos de palabras clave arbitrarias, **kwargs
Si no sabe cuántos argumentos de palabras clave se pasarán a su función, agregue dos asteriscos: **
antes del nombre del parámetro en la definición de la función.
De esta manera la función recibirá un diccionario de argumentos y podrá acceder a los elementos en consecuencia:
Ejemplo
Si se desconoce el número de argumentos de palabras clave, agregue un doble **
antes del nombre del parámetro:
def my_function(**kid):
print("His last name is " + kid["lname"])
my_function(fname = "Tobias", lname = "Refsnes")
Inténtalo tú mismo »
Los argumentos arbitrarios de Kword a menudo se abrevian a **kwargs en la documentación de Python.
Valor de parámetro predeterminado
El siguiente ejemplo muestra cómo utilizar un valor de parámetro predeterminado.
Si llamamos a la función sin argumento, usa el valor predeterminado:
Ejemplo
def my_function(country = "Norway"):
print("I am from " + country)
my_function("Sweden")
my_function("India")
my_function()
my_function("Brazil")
Inténtalo tú mismo »
Pasar una lista como argumento
Puede enviar cualquier tipo de datos como argumento a una función (cadena, número, lista, diccionario, etc.) y será tratado como el mismo tipo de datos dentro de la función.
Por ejemplo, si envía una Lista como argumento, seguirá siendo una Lista cuando llegue a la función:
Ejemplo
def my_function(food):
for x in food:
print(x)
fruits = ["apple", "banana", "cherry"]
my_function(fruits)
Inténtalo tú mismo »
Valores de retorno
Para permitir que una función devuelva un valor, utilice la instrucción return
:
Ejemplo
def my_function(x):
return 5 * x
print(my_function(3))
print(my_function(5))
print(my_function(9))
Inténtalo tú mismo »
La declaración de pass
Las definiciones de function
no pueden estar vacías, pero si por alguna razón tiene una definición de function
sin contenido, colóquela la instrucción pass
para evitar recibir un error.
Recursión
Python también acepta la recursividad de funciones, lo que significa que una función definida puede llamarse a sí misma.
La recursividad es un concepto matemático y de programación común. Significa que una función se llama a sí misma. Esto tiene la ventaja de que puedes recorrer los datos para llegar a un resultado.
El desarrollador debe tener mucho cuidado con la recursividad, ya que puede ser bastante fácil escribir una función que nunca termina, o una que utiliza cantidades excesivas de memoria o potencia del procesador. Sin embargo, cuando se escribe correctamente, la recursividad puede ser un enfoque de programación muy eficiente y matemáticamente elegante.
En este ejemplo, tri_recursion() es una función que hemos definido para llamarse a sí misma ("recurse"). Usamos la variable k como dato, que disminuye (-1) cada vez que recurrimos. La recursividad finaliza cuando la condición no es mayor que 0 (es decir, cuando es 0).
Para un nuevo desarrollador, puede llevar algún tiempo descubrir cómo funciona esto exactamente; la mejor manera de averiguarlo es probándolo y modificándolo.
Ejemplo
Ejemplo de recursividad
def tri_recursion(k):
if(k > 0):
result = k + tri_recursion(k - 1)
print(result)
else:
result = 0
return result
print("\n\nRecursion Ejemplo Results")
tri_recursion(6)
Inténtalo tú mismo »