Argumentos clave

En este enfoque invocamos nuestra función con tantos argumentos como parámetros se hayan determinado, pero especificando los parámetros a los que se asignan los argumentos. Por ejemplo:

def suma(a, b):
    return a + b

 

suma(b = 2, a = 5)

7

Ahora la asignación no se realiza en función de la posición de cada argumento, sino por el nombre del parámetro que se especifique.

No es imprescindible especificar el nombre de todos los parámetros siempre que respetemos una sencilla regla: no es posible usar argumentos posicionales a la derecha de un argumento clave. Por ejemplo, el siguiente código es perfectamente válido pues se invoca la función incluyendo los argumentos posicionales primero y los argumentos clave después (a la derecha de los anteriores):

def suma(a, b, c):
    return a + b + c

 

suma(3, c = 2, b = 5)

10

Sin embargo, en el siguiente código se especifican primero los argumentos clave y después los posicionales, devolviendo un error:

def suma(a, b):
    return a + b

 

suma(b = 2, a)

  File "<ipython-input-6-4aa09c696a24>", line 4
    suma(b = 2, a)
                ^
SyntaxError: positional argument follows keyword argument