Quan disposem de funcions que tenen molts paràmetres, i només volem especificar alguns d'ells, podem donar-los valor indicant el seu nom d'això se'n diu arguments per nom - fem servir el nom del paràmetre en comptes de la posició per a especificar els arguments de la funció.
Aquesta manera presenta dos avantatges - el primer, facilita l'ús de la funció ja que no ens hem de preocupar per l'ordre dels arguments. I dos, podem donar valors només als paràmetres que vulguem, sempre i quant la resta dels paràmetres tinguin valors per defecte.
Example 7.6. Ús dels arguments per nom
#!/usr/bin/python # Filename: func_key.py def func(a, b=5, c=10): print 'a is', a, 'and b is', b, 'and c is', c func(3, 7) func(25, c=24) func(c=50, a=100)
$ python func_key.py a is 3 and b is 7 and c is 10 a is 25 and b is 5 and c is 24 a is 100 and b is 5 and c is 50
La funció func
té un únic paràmetre sense valor per defecte, seguit de dos paràmetres que sí en tenen.
A la primera crida, func(3, 7)
, el paràmetre a
rep el valor 3
, el paràmetre b
rep un 5
i c
rep el valor per defecte 10
.
A la segona crida, func(25, c=24)
, el paràmetre a
rep un 25 per la posició del argument, el paràmetre c
rep un 24
pel seu nom (keyword arguments) i finalment, b
rep el seu valor per defecte, 5
.
A la tercera crida, func(c=50, a=100)
, fem servir pas d'arguments per nom per especificar el paràmetre de cada valor que passem. Fixem-nos que estem especificant el valor pel paràmetre c
abans del corresponent al paràmetre a
, malgrat a
apareix abans de c
a la definició de la funció.