Funciones con parámetros clave
Generalmente en Python se utilizan los parámetros por posición o parámetros obligatorios, es decir, que cuando se llama a una función la posición indica qué parámetro es cada argumento. Pero también tenemos la posibilidad de no seguir ese orden si utilizamos parámetros con palabras clave o parámetros opcionales.
Consideremos la siguiente definición de función:
def funcion1(a, b, c)
Si realizamos la siguiente llamada a función:
funcion1(1, 2, 3)
Dentro de la función funcion1:
- La variable
atomará el valor1. - La variable
btomará el valor2. - La variable
ctomará el valor3.
Pero podemos modificar este orden en la llamada de la función si indicamos en la llamada para todos los parámetros cuál es su valor:
funcion1(b=1, c=2, a=3)
En este caso, dentro de la función funcion1:
- La variable
atomará el valor3. - La variable
btomará el valor1. - La variable
ctomará el valor2.
En la llamada a la función ya no es necesario seguir el orden de definición de los parámetros.
En la propia definición de la función podemos utilizar los parámetros por palabra clave y asignarles un valor por defecto a un parámetro:
def funcion1(a=1, b=2, c=3)
Esto hace que a los parámetros que tienen un valor por defecto, no sea necesario pasarles un valor en la llamada de la función. Realizamos esta llamada a función:
funcion1()
Dentro de la función funcion1, la variable a tomará el valor 1, la variable b el valor 2, y la variable c el valor 3. Pero podemos sobrescribir estos valores. Podemos sobrescribir el número de valores que queramos realizando una llamada por parámetros con palabras clave:
funcion1(a=5, b=7)
En este caso, dentro de la función funcion1, la variable a tomará el valor 5, la variable b el valor 7, y la variable c el valor 3.
Mezclar parámetros por posición y parámetros clave
Puedes mezclar ambos tipos de parámetros (por posición y clave), asegurándote de que los parámetros posicionales estén antes de los clave.
def describir_personal(nombre, edad=25):
print(f"{nombre} tiene {edad} años.")
# Llamar a la función proporcionando solo el parámetro obligatorio
describir_personal("Ana")
# Llamar a la función proporcionando ambos parámetros
describir_personal("Juan", 30)