Это означает конец только позиционных параметров , параметров, которые нельзя использовать в качестве параметров ключевых слов. До Python 3.8 такие параметры могли быть указаны только в C API.
Это означает, что key
аргумент to __contains__
может быть передан только через position ( range(5).__contains__(3)
), а не как ключевое слово аргумент ( range(5).__contains__(key=3)
), что можно сделать с помощью позиционных аргументов в функциях чистого Python.
Также смотрите документацию Argument Clinic :
Чтобы пометить все параметры как только позиционные в Argument Clinic, добавьте знак « /
a» в строке после последнего параметра, с таким же отступом, как и строки параметров.
и (очень недавнее дополнение к) Python FAQ :
Косая черта в списке аргументов функции означает, что предшествующие ей параметры являются только позиционными. Только позиционные параметры - это те, которые не имеют внешнего имени. При вызове функции, которая принимает только позиционные параметры, аргументы сопоставляются с параметрами, основываясь исключительно на их позиции.
Синтаксис теперь является частью спецификации языка Python, начиная с версии 3.8 , см. PEP 570 - Только позиционные параметры Python . До PEP 570 синтаксис был уже зарезервирован для возможного будущего включения в Python, см. PEP 457 - Синтаксис для позиционных параметров .
Только позиционные параметры могут привести к более чистым и понятным API, сделать реализации на чистом Python других модулей C-only более согласованными и более простыми в обслуживании, а поскольку параметры только позиционирования требуют очень небольшой обработки, они приводят к более быстрому коду Python.
/
токена, потому что «это обратная операция*
» показывает, что Python просто немного сумасшедший. Это своего рода синестезия.Прямая косая черта (/) указывает, что все аргументы, предшествующие этому, являются позиционным аргументом. Функция только позиционных аргументов была добавлена в Python 3.8 после принятия PEP 570 . Первоначально эта нотация была определена в PEP 457 - Нотация для нотации только для позиционных параметров.
Давайте возьмем следующий пример
Здесь в приведенном выше определении функции параметры a и b являются только позиционными, в то время как x или y могут быть позиционными или ключевыми словами.
Следующие вызовы функций действительны
Но следующий вызов функции недопустим, что вызывает исключение TypeError, поскольку a, b не передаются как позиционные аргументы, а передаются как ключевое слово
Многие встроенные в Python функции принимают только позиционные аргументы, когда передача аргументов по ключевому слову не имеет смысла. Например, встроенная функция len принимает только один позиционный (единственный) аргумент, где вызов len как len (obj = "hello world") ухудшает читабельность, проверьте help (len).
Только позиционные параметры позволяют легко поддерживать базовые функции c / library. Это позволяет в будущем изменять имена параметров только позиционных параметров без риска нарушения кода клиента, использующего API.
И последнее, но не менее важное: позиционные параметры позволяют нам использовать их имена для использования в аргументах ключевых слов переменной длины. Проверьте следующий пример
Позиционные параметры только лучше Объяснено здесь в Типах аргументов функции в python: Позиционные Только Параметры
Синтаксис только для позиционных параметров был официально добавлен в python3.8. Оформить заказ Что нового python3.8 - позиционные только аргументы
Связанный с PEP: PEP 570 - только позиционные параметры Python
источник