Combinación de tipos de argumentos

Estos enfoques se pueden combinar siempre que respetemos las reglas mencionadas:

  1. Los argumentos con valor por defecto siempre deberán incluirse a la derecha de los argumentos sin valor por defecto
  2. Los argumentos posiciones arbitrarios deben incluirse a la derecha de los argumentos posicionales
  3. Los argumentos clave siempre deberán incluirse a la derecha de los argumentos posicionales
  4. Los argumentos clave arbitrarios deberán incluir a la derecha de los argumentos clave

Por ejemplo, la siguiente función suma todos los argumentos que recibe, con independencia de su tipo:

def suma(a, *args, b = 0, c = 0, **kwargs):
    # Argumentos posicionales
    total = a
    # Argumentos posicionales arbitrarios
    for value in args:
        total += value
    # Argumentos posicionales con valor por defecto
    total += b
    # Argumentos clave
    total += c
    # Argumentos clave arbitrarios
    for value in kwargs.values():
        total+= value
    return total

 

suma(2, 1, 3, 2, c = 1, d = 3, e = 4)

16

En este código Python interpreta correctamente las asignaciones:

  • El argumento 2 es posicional
  • Los argumentos 1 y 3 son posicionales arbitrarios
  • El argumento 2 es un argumento posicional con valor por defecto
  • El argumento c = 1 es un argumento clave
  • Los argumentos d = 3 y e = 4 son argumentos clave arbitrarios