? Funciones en Python _ El Libro De Python
? Funciones en Python _ El Libro De Python
CO N T E N I D O
Funciones en Python
Pasando argumentos de entrada
Argumentos de longitud variable
Sentencia return
Documentación
Anotaciones en funciones
Funciones
•
en Python
Anteriormente hemos usado funciones nativas que vienen con Python como len()
para calcular la longitud de una lista, pero al igual que en otros lenguajes de
programación, también podemos de�nir nuestras propias funciones. Para ello hacemos
uso de def .
def nombre_funcion(argumentos):
código
return retorno
def f(x):
return 2*x
y = f(3)
print(y) # 6
def di_hola():
print("Hola")
di_hola() # Hola
def di_hola(nombre):
print("Hola", nombre)
di_hola("Juan")
# Hola Juan
Tampoco es posible usar mas argumentos de los tiene la función de�nidos, ya que no
sabría que hacer con ellos. Por lo tanto si lo intentamos, Python nos dirá que toma 2
posicionales y estamos pasando 3, lo que no es posible.
resta(a=3, b=5) # -2
resta(b=5, a=3) # -2
Dado que el parámetro c tiene un valor por defecto, la función puede ser llamada sin
ese valor.
suma(4,3) # 7
Podemos incluso asignar un valor por defecto a todos los parámetros, por lo que se
podría llamar a la función sin ningún argumento de entrada.
suma(1) # 6
suma(4,5) # 9
suma(5,3,2) # 10
O haciendo uso de lo que hemos visto antes y usando los nombres de los argumentos.
suma(a=5, b=3) #8
Imaginemos que queremos una función suma() como la de antes, pero en este caso
necesitamos que sume todos los números de entrada que se le pasen, sin importar si
son 3 o 100. Una primera forma de hacerlo sería con una lista.
def suma(numeros):
total = 0
for n in numeros:
total += n
return total
suma([1,3,5,4]) # 13
Por suerte, Python tiene una herramienta muy potente. Si declaramos un argumento
con *, esto hará que el argumento que se pase sea empaquetado en una tupla de
manera automática. No confundir * con los punteros en otros lenguajes de
programación, no tiene nada que ver.
def suma(*numeros):
print(type(numeros))
# <class 'tuple'>
total = 0
for n in numeros:
total += n
return total
suma(1, 3, 5, 4) # 13
suma(6) # 6
suma(6, 4, 10) # 20
suma(6, 4, 10, 20, 4, 6, 7) # 57
Usando doble ** es posible también tener como parámetro de entrada una lista de
elementos almacenados en forma de clave y valor. En este caso podemos iterar los
valores haciendo uso de items() .
def suma(**kwargs):
suma = 0;
for key, value in kwargs.items():
print(key, value)
suma += value
return suma
def suma(**kwargs):
suma = 0
for key, value in kwargs.items():
print(key, value)
suma += value
return suma
di = {'a': 10, 'b':20}
suma(**di) # 30
Sentencia return
El uso de la sentencia return permite realizar dos cosas:
def mi_funcion():
print("Entra en mi_funcion")
return
print("No llega")
mi_funcion() # Entra en mi_funcion
Por ello, sólo llamamos a return una vez hemos acabado de hacer lo que teníamos
que hacer en la función.
Por otro lado, se pueden devolver parámetros. Normalmente las funciones son
llamadas para realizar unos cálculos en base a una entrada, por lo que es interesante
poder devolver ese resultado a quien llamó a la función.
def di_hola():
return "Hola"
di_hola()
# 'Hola'
Documentación
Ahora que ya tenemos nuestras propias funciones creadas, tal vez alguien se interese
en ellas y podamos compartírselas. Las funciones pueden ser muy complejas, y leer
código ajeno no es tarea fácil. Es por ello por lo que es importante documentar las
funciones. Es decir, añadir comentarios para indicar como deben ser usadas.
Para ello debemos usar la triple comilla """ al principio de la función. Se trata de una
especie de comentario que podemos usar para indicar como la función debe ser usada.
No se trata de código, es un simple comentario un tanto especial, conocido como
docstring .
Ahora cualquier persona que tenga nuestra función, podrá llamar a la función help() y
obtener la ayuda de como debe ser usada.
help(mi_funcion_suma)
Otra forma de acceder a la documentación es la siguiente.
print(mi_funcion_suma.__doc__)
Para saber más: Las descripciones de las funciones suelen ser un poco mas detalladas
de lo que hemos mostrado. En la PEP257 se de�ne en detalle como debería ser.
Anotaciones en funciones
Existe una funcionalidad relativamente reciente en Python llamada function
annotation o anotaciones en funciones. Dicha funcionalidad nos permite añadir
metadatos a las funciones, indicando los tipos esperados tanto de entrada como de
salida.
multiplica_por_3(6) # 18
Las anotaciones son muy útiles de cara a la documentación del código, pero no
imponen ninguna norma sobre los tipos. Esto signi�ca que se puede llamar a la
función con un parámetro que no sea int , y no obtendremos ningún error.
multiplica_por_3("Cadena")
# 'CadenaCadenaCadena'
Anterior Siguiente
Política de privacidad
Términos y condiciones
Contacta con nosotros