Ya tenemos aquí el segundo post de apuntes de Python 3, que sigue al primero que publiqué hace ya unos meses. Pincha en el siguiente link si te lo perdiste:
1. Funciones (continuación)
Argumentos de la función (continuación)
Podemos setear un valor por defecto de uno o más argumentos de la función, de tal manera que si al llamar a la función no le pasamos dichos argumentos, éstos tomarán el valor por defecto. Podemos pasarle como valor por defecto, una variable, pero mucho cuidado pues el valor por defecto se seteará en el momento de la definición, con lo que si modificas la variable después de la definición de la función, no variará el valor por defecto del argumento.
>>> def myfunc(a,b=33,c='hello'):
>>> print(a,b,c)
>>>
>>> myfunc(1,2)
1 2 hello
Respecto a los argumentos al llamar a una función, deberíamos usar «keyword arguments» (aka «kwargs») en lugar de argumentos posicionales. Es más largo pero es mucho más claro.
def myfunc(a,b,c):
pass
myfunc(1,2,3) #argumentos posicionales
myfunc(a=1,b=2,c=3) #kwargs
Podemos usar un único argumento al definir la función para capturar cualquier número de argumentos posicionales (un asterísco) o kwargs (dos asteríscos) que se le pasen a la función.
def myfunc(*myargs): #myargs será una tupla con todos los argumentos posicionales
def myfunc(**mykwargs): #mykwargs será un diccionario con todos los kwargs