Saltar al contenido principal

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 a tomará el valor 1.
  • La variable b tomará el valor 2.
  • La variable c tomará el valor 3.

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 a tomará el valor 3.
  • La variable b tomará el valor 1.
  • La variable c tomará el valor 2.

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)