为何Python内置常量无法通过__builtins__的点语法访问?
关于Python中
False作为内置常量的属性访问问题 根据Python官方文档的Built-in Constants章节,False是内置常量之一。我们可以通过getattr函数获取它:
>>> print(getattr(__builtins__, "False")) False
但直接使用点语法访问__builtins__.False会触发语法错误:
>>> print(__builtins__.False) File "<stdin>", line 1 print(__builtins__.False) ^^^^^ SyntaxError: invalid syntax
原因在于,Python解释器在语法解析阶段就会把False识别为关键字/内置常量,不会将其当作普通属性名执行后续的属性查找操作。
虽然getattr(x, 'foobar')在文档中被说明等价于x.foobar,但这个规则对Python的保留关键字并不适用:点语法中如果属性名是关键字,会直接被判定为语法无效;而getattr通过字符串传递属性名,绕过了语法解析阶段的关键字校验,因此能正常完成属性查找。
内容的提问来源于stack exchange,提问作者jensa
相关产品推荐
相关产品推荐

