¿Qué imprime esto?
def f(*args, **kwargs):
print(args, kwargs)
f(1, 2, mode="fast")Opciones
- [1, 2] {'mode': 'fast'}
- (1, 2) {'mode': 'fast'} (Opción correcta)
- (1, 2, 'fast') {}
- Un error
Respuesta
(1, 2) {'mode': 'fast'}
Por qué
*args reúne los argumentos posicionales extra (pasados sin nombre) en una tupla: (1, 2).
**kwargs reúne los argumentos con nombre extra (pasados como nombre=valor) en un dict: {'mode': 'fast'}.
Permiten que una función acepte cualquier número de argumentos. Los decorators los usan para pasarlo todo.
Recuerda
*args → tupla de argumentos posicionales. **kwargs → dict de argumentos con nombre.