在 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
Python 3.9 中引入的PEG 解析器比旧解析器灵活得多,所以它能够处理这种事情。尝试创建
type
关键字会破坏太多现有代码,所以他们……没有这样做。match
/case
是一个类似的故事 - 制作这些关键字会破坏太多代码,例如使用re.match
.的所有async
内容过去都被类似地处理,尽管因为它是在 3.5 中引入的,他们不得不使用标记器黑客才能使其工作 - 解析器不够强大,无法单独处理这个问题。