Funciones con parametrización avanzada
Orden recomendado
- Posicionales individuales. Parámetro posicional <-> Argumento posicional obligatorio
- *args. Tupla de tamaño indeterminado de posicionales. No tiene argumentos obligatorios. Positional-only
- Pares clave-valor o con valor por defecto individuales. Parámetro con valor por defecto <-> Argumento opcional
- **kwargs. Diccionario de tamaño indeterminado de pares clave-valor. No tiene argumentos obligatorios. Keyword-only
variantes individuales exclusivas (positional-only y keyword-only). Dependen de los seudo-parámetros / y *
def foo1(a, b, *args, n1="ene uno", **kwargs):
print('foo1')
print(a, b, args, n1, kwargs)
foo1(1, 2, 3, 4, 5, xX="equisequis", n1="<nuevo ene uno>", nN="algo")
foo1("a", "b") # los únicos argumentos obligatorios son los que corresponde a parámetros posicionales
# funciona pero no es recomendable porque dificulta la percepción del orden
def foo2(a, b, n1="ene uno", *args, **kwargs):
print('foo2')
print(a, b, args, n1, kwargs)
foo2(1, 2, 3, 4, 5, k='k')