A algunes funcions pot ser útil definir alguns dels seus paràmetres com a opcionals, i fer servir valors per defecte quan l'usuari no vulgui passar valors per a aquests paràmetres. Aquesta funcionalitat s'aconsegueix especificant el valor per defecte pels paràmetres en forma d'assignació a la seva definició.
Atenció: el valor per defecte ha de ser una constant. Més concretament, el valor de l'argument ha de ser immutable. Aquest punt s'explicarà amb detall en posteriors capítols.
Example 7.5. Ús de paràmetres amb valor per defecte
#!/usr/bin/python # Filename: func_default.py def say(message, times = 1): print message * times say('Hello') say('World', 5)
La funció say
permet escriure un string tants cops com es vulgui. Si no es diu quants, per defecte escriurà la cadena una sol cop. Això s'aconsegueix especificant que el valor per defecte del paràmetre times
és 1
.
El primer cop que es fa servir la funció say
, se li passa només la cadena, i per tant, només l'escriu un cop. A la segona crida, se li passa també l'argument 5
. Amb això se li està demanat a la funció que mostri el missatge 5 cops.
Només es poden definir com a paràmetres per defecte, els que apareixen al final de la llista de paràmetres. Dit d'una altra manera, no es pot definir un paràmetre amb valor per defecte davant d'un altre sense valor per defecte (segons l'ordre definit per la llista de paràmetres de la funció). Aquesta restricció apareix pel fet que els valors són assignats als paràmetres segons la seva posició. Per exemple, def func(a, b=5)
és correcte, però def func(a=5, b)
no ho és.