A Byte of Python

Paràmetres amb valor per defecte

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.

Ús de paràmetres amb valor per defecte

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)
				
				

Sortida

				
$ python func_default.py
Hello
WorldWorldWorldWorldWorld
				
				

Com funciona

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.

Important

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.