Каково значение прямой косой черты "/" в сигнатуре метода Python, как показано с помощью (foo)?
В сигнатуре, возвращенной в интерактивном режиме с помощью help(foo)
, в чем смысл /
?
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.
Я думал, что это может быть связано с ключевыми словами, но это не так. Когда я создаю свою собственную функцию с аргументами только для ключевого слова, аргументы positional и keyword only разделяются *
(как и ожидалось), а не на /
. Что означает /
?
Ответы
Ответ 1
Как объясняется здесь, параметр '/' обозначает конец параметров, которые являются только позиционными (см. здесь), то есть параметры, которые вы не можете использовать в качестве параметров ключевого слова. В случае __eq__(self, value, /)
косая черта находится в конце, что означает, что все параметры отмечены как позиционные, тогда как в случае вашего __init__
только self является только позиционным.