Почему «тип» не является ключевым словом в Python?

В Python 3.12 у нас есть такие псевдонимы типов:

Python 3.12.4+ (heads/3.12:99bc8589f0, Jul 27 2024, 11:20:07) [GCC 12.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> type S = str
>>> S
S

Используя этот синтаксис, я предположил, что с этого момента слово type считается ключевым словом, но это не так:

>>> type = 2
>>> 

а также:

>>> import keyword
>>> keyword.iskeyword('type')
False

Согласно docs.python.org/3/whatsnew/… -> docs.python.org/3/reference/simple_stmts.html#type , type теперь является мягким ключевым словом.

jonrsharpe 31.07.2024 17:35

Мягкие ключевые слова — это только ключевые слова в данном контексте; в других местах они по-прежнему доступны в качестве идентификаторов. Это функция, доступная парсеру PEG, который сейчас используется в CPython.

chepner 31.07.2024 17:36

не говоря уже о том, что отмена встроенного вызова type в одночасье сделает недействительными 30 лет и триллионы строк кода.

jsbueno 31.07.2024 17:55
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
4
3
54
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Парсер PEG, представленный в Python 3.9, намного более гибок, чем старый парсер, поэтому он просто способен обрабатывать подобные вещи. Попытка создать ключевое слово type нарушила бы слишком много существующего кода, поэтому они просто... этого не сделали.

match/case — аналогичная история: создание этих ключевых слов привело бы к поломке слишком большого количества кода, например всего, что использует re.match. async раньше рассматривались аналогично, хотя, поскольку он был представлен еще в версии 3.5, им пришлось использовать хак токенайзера, чтобы заставить его работать — парсер не был достаточно мощным, чтобы справиться с проблемой самостоятельно.

Спасибо, я проверил, что keyword.issoftkeyword('type') — это True.

Amir reza Riahi 31.07.2024 17:41

Другие вопросы по теме