2.2. Argumentos opcionales y con nombre

Python permite que los argumentos de funciones tengan valores por omisión; si la función es llamada sin el argumento, éste toma su valor por omisión. Además, los argumentos pueden especificarse en cualquier orden si se les da nombre. Los procedimientos almacenados en SQL Server Transact/SQL pueden hacer esto; si es usted un gurú de los scripts en SQL Server, puede saltarse esta parte.

Ejemplo 2.4. help, una función con dos argumentos opcionales


def help(object, spacing=10, collapse=1):

spacing y collapse son opcionales, porque tienen asignados valores por omisión. object es obligatorio, porque no tiene valor por omisión. Si se llama a help sólo con un argumento, spacing valdrá 10 y collapse valdrá 1. Si se llama a help con dos argumentos, collapse seguirá valiendo 1.

Supongamos que desea usted especificar un valor para collapse, pero acepta el valor por omisión de spacing. En la mayoría de los lenguajes no tendría tanta suerte, pues debería llamar a la función con los tres argumentos. Pero en Python, los argumentos pueden indicarse por su nombre en cualquier orden.

Ejemplo 2.5. Llamadas válidas a help

help(odbchelper)                    1
help(odbchelper, 12)                2
help(odbchelper, collapse=0)        3
help(spacing=15, object=odbchelper) 4
1 Con un único argumento, spacing toma su valor por omisión de 10 y collapse toma su valor por omisión de 1.
2 Con dos argumentos, collapse toma su valor por omisión de 1.
3 Aquí se nombra explícitamente el argumento collapse y se le da un valor. spacing toma su valor por omisión de 10.
4 Incluso los argumentos obligatorios (como object, que no tiene valor por omisión) pueden indicarse por su nombre, y los argumentos así indicados pueden aparecer en cualquier orden.

Esto sorprende hasta que se advierte que los argumentos simplemente forman un diccionario. El método “normal” de llamar a funciones sin nombres de argumentos es realmente un atajo por el que Python empareja los valores con sus nombres en el orden en que fueron especificados en la declaración de la función. La mayor parte de las veces llamará usted a las funciones de la forma “normal”, pero siempre dispone de esta flexibilidad adicional si la necesita.

Nota
Lo único que debe hacerse para llamar a una función es especificar un valor (del modo que sea) para cada argumento obligatorio; el modo y el orden en que se haga esto depende de usted.

Lecturas complementarias