[英]How are the contents of the builtins module available in the global namespace without import in Python?
答案的非实现细节部分是builtins
模块,或Python 2中的__builtin__
,提供对内置命名空间的访问。 如果你想修改内置插件(你通常不应该这样做),在builtins
设置上设置属性是你如何去做的。
实现细节部分答案是Python以多种方式跟踪内置函数。 例如,每个框架对象都会跟踪它正在使用的内置命名空间,这可能与其他框架的内置命名空间不同。 您可以通过框架的f_builtins
属性访问它。 当LOAD_GLOBAL
指令无法在框架的全局变量中找到名称时,它会查看框架的内部结构。 在大多数全局命名空间中还有一个__builtins__
全局变量,但它并不直接用于内置变量查找; 相反,它用于在帧对象创建期间在某些情况下初始化f_builtins
。 全局PyInterpreterState
还有一个builtins
引用,如果没有当前帧对象,它将用作默认内置函数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.