Funciones de Python
Una función es un bloque de código que solo se ejecuta cuando se le llama.
Puede pasar datos, conocidos como parámetros, a una función.
Una función puede devolver datos como resultado.
Crear una función
En Python, una función se define usando la palabra clave def :
Ejemplo
def my_function():
print("Hello from a function")
Llamar a una función
Para llamar a una función, use el nombre de la función seguido de paréntesis:
Ejemplo
def my_function():
print("Hello from a function")
my_function()
Argumentos
La información se puede pasar a funciones como argumentos.
Los argumentos se especifican después del nombre de la función, entre paréntesis. Puede agregar tantos argumentos como desee, simplemente sepárelos 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")
Los argumentos a menudo se reducen 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 aparece 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
Por defecto, una función debe llamarse 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")
Ejemplo
Esta función espera 2 argumentos, pero solo obtiene 1:
def my_function(fname, lname):
print(fname + " " + lname)
my_function("Emil")
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")
Los argumentos arbitrarios a menudo se abrevian a *args en la documentación de Python.
Argumentos de palabras clave
También puede 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")
La frase Argumentos de palabras clave a menudo se abrevia como 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 forma, 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")
Los argumentos Kword arbitrarios a menudo se reducen 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")
Pasar una lista como argumento
Puede enviar cualquier tipo de datos de argumento a una función (cadena, número, lista, diccionario, etc.), y se tratará 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)
Valores devueltos
Para permitir que una función devuelva un valor, use la return
declaración:
Ejemplo
def my_function(x):
return 5 * x
print(my_function(3))
print(my_function(5))
print(my_function(9))
La declaración de pase
function
las definiciones no pueden estar vacías, pero si por algún motivo tiene una function
definición sin contenido, introdúzcala en la pass
declaración para evitar que se produzca un error.
Ejemplo
def myfunction():
pass
recursividad
Python también acepta la función recursiva, 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 puede 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 usa cantidades excesivas de memoria o potencia del procesador. Sin embargo, cuando se escribe correctamente, la recursión 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 ("recursión"). Usamos la variable k como los datos, que decrementa ( -1 ) cada vez que recursamos. La recursión termina cuando la condición no es mayor que 0 (es decir, cuando es 0).
Para un nuevo desarrollador, puede tomar algún tiempo averiguar cómo funciona exactamente esto, 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 Example Results")
tri_recursion(6)