¿Qué pasa con f(1, 2)?
def f(a, *, b):
return a + bOpciones
- Devuelve 3, porque se suman los dos argumentos
- TypeError: la función acepta 1 argumento posicional pero se le dieron 2 (Opción correcta)
- Se ejecuta, con
ben None porque no se nombró - SyntaxError, porque no se permite un
*suelto en una definición
Respuesta
TypeError: acepta 1 argumento posicional pero se le dieron 2
Por qué
Todo parámetro después de un * suelto debe pasarse por nombre (keyword-only).
b está después del *, así que f(1, 2) falla: la función acepta un solo argumento posicional. La llamada correcta es f(1, b=2).
Esto hace las llamadas más claras. Los parámetros antes de una / son lo contrario: positional-only.
Recuerda
Después de * → keyword-only. Antes de / → positional-only.