为什么名为“del”、“return”等的对象属性是语法错误?

2023-12-06

我知道人们不应该能够替换“del”(“return”等)关键字的行为,但我不明白为什么不可能这样做:

myobj.del(mystr)

解析器会将其与什么混淆?有办法允许吗?

当然,我可以使用不同的名称,但我想在 AWS 工具 s3cmd 周围有一个自定义包装器,并执行以下操作:s3cmd.del("s3://some/bucket/")并让“del”由__getattr__在我的 s3cmd 类中...所以我很乐意使用名称“del”。


这是因为这些词是关键词。 Python中的关键字是保留字,不能用作普通标识符。

该列表包括来自 doc 函数keyword

>>> import keyword  
>>> import pprint
>>> pprint.pprint(keyword.kwlist)
['and',
 'as',
 'assert',
 'break',
 'class',
 'continue',
 'def',
 'del',
 'elif',
 'else',
 'except',
 'exec',
 'finally',
 'for',
 'from',
 'global',
 'if',
 'import',
 'in',
 'is',
 'lambda',
 'not',
 'or',
 'pass',
 'print',
 'raise',
 'return',
 'try',
 'while',
 'with',
 'yield']

其原因在康拉德的评论

关键词并没有什么神奇之处。然而,它使解析器vastly当不允许标识符使用关键字时更容易编写。特别是,它可以更轻松地为解析错误提供人类可读的错误消息,因为解析器能够推断有关错误的更多上下文。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么名为“del”、“return”等的对象属性是语法错误? 的相关文章

随机推荐