¿Cuál es el significado de una barra diagonal "/" en una firma del método Python, como se muestra en la ayuda(foo)?
inspection python-interactive (1)
Esta pregunta ya tiene una respuesta aquí:
En la firma devuelta interactivamente por help(foo)
, ¿cuál es el significado de a /
?
In [37]: help(object.__eq__)
Help on wrapper_descriptor:
__eq__(self, value, /)
Return self==value.
In [55]: help(object.__init__)
Help on wrapper_descriptor:
__init__(self, /, *args, **kwargs)
Initialize self. See help(type(self)) for accurate signature.
Pensé que podría estar relacionado con argumentos de palabra clave, pero no lo está. Cuando creo mi propia función con argumentos de palabra clave, los argumentos posicionales y de palabra clave están separados por *
(como se esperaba), no por /
. ¿Qué significa el /
?
Como se explica here , el ''/'' como parámetro marca el final de los parámetros que son solo posicionales (consulte here ), es decir, los parámetros que no puede usar como parámetros de palabras clave. En el caso de __eq__(self, value, /)
la barra diagonal está al final, lo que significa que todos los parámetros están marcados como posicionales solo, mientras que en el caso de __init__
solo self es solo posicional.