No Python 3.12, temos aliases de tipo como este:
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
Por esta sintaxe presumi que, a partir de agora, a type
palavra é considerada uma palavra-chave, mas não é:
>>> type = 2
>>>
e também:
>>> import keyword
>>> keyword.iskeyword('type')
False
O analisador PEG introduzido no Python 3.9 é muito mais flexível que o analisador antigo, portanto é capaz de lidar com esse tipo de coisa. Tentar criar
type
uma palavra-chave quebraria muito o código existente, então eles simplesmente... não o fizeram.match
/case
é uma história semelhante - criar essas palavras-chave quebraria muito código, como tudo que usare.match
.async
costumava ser tratado de forma semelhante, embora desde que foi introduzido na versão 3.5, eles tiveram que usar um hack do tokenizer para fazê-lo funcionar - o analisador não era poderoso o suficiente para lidar com o problema sozinho.