Parámetro de palabra clave solamente

Consulte http://docs.python.org/3/glossary.html#term-parameter

parámetro solo palabra clave : especifica un argumento que solo se puede proporcionar por palabra clave. Los parámetros de solo palabras clave se pueden definir incluyendo un único parámetro var-posicional o bare * en la lista de parámetros de la definición de la función anterior, por ejemplo, kw_only1 y kw_only2 en lo siguiente:

def func(arg, *, kw_only1, kw_only2): 

En lugar de un único parámetro var-posicional, ¿no debería ser un único parámetro var-keyword? Tal vez entendí algo mal …

No, debe usar el parámetro * bare , o usar un solo parámetro *args , llamado parámetro var-positional (vea el siguiente elemento en esa entrada del glosario). Al agregarla a la firma de su función, obliga a que todos los parámetros que la siguen sean solo de palabra clave.

Entonces la firma de la función podría ser:

 def func(positional_arg1, *variable_args, kw_only1, kw_only2): 

y variable_args capturará los argumentos posicionales adicionales pasados ​​a la función, o podría usar:

 def func(positional_arg1, *, kw_only1, kw_only2): 

y la función no admitirá argumentos posicionales adicionales más allá del primero.

En ambos casos, puede configurar kw_only1 y kw_only2 solo usándolos como argumentos de palabras clave cuando llame a func() . Sin valores predeterminados (no = en su definición) todavía son argumentos obligatorios .