Repaso
English
PythonIntermedioPY-22

¿Qué pasa con f(1, 2)?

def f(a, *, b):
    return a + b

Opciones

  1. Devuelve 3, porque se suman los dos argumentos
  2. TypeError: la función acepta 1 argumento posicional pero se le dieron 2 (Opción correcta)
  3. Se ejecuta, con b en None porque no se nombró
  4. 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.

Términos clave

Practica esta pregunta en Repaso