Подтвердить что ты не робот

Каково значение прямой косой черты "/" в сигнатуре метода 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 разделяются * (как и ожидалось), а не на /. Что означает /?

4b9b3361

Ответ 1

Как объясняется здесь, параметр '/' обозначает конец параметров, которые являются только позиционными (см. здесь), то есть параметры, которые вы не можете использовать в качестве параметров ключевого слова. В случае __eq__(self, value, /) косая черта находится в конце, что означает, что все параметры отмечены как позиционные, тогда как в случае вашего __init__ только self является только позиционным.