没有在Python中导入的情况下,如何在全局名称空间中使用内置模块的内容?

时间:2019-01-13 22:02:18

标签: python python-3.x

我已经使用Python很长时间了。我从未发现内置函数是如何工作的。换句话说,在不导入任何模块使用它们的情况下如何包含它们?如果要(本地)添加到他们该怎么办?

这似乎很幼稚。但是,我还没有真正找到能全面解释在开发脚本时如何使用内置函数,全局变量等的答案。

简而言之,我们在哪里包括builtins模块?

我遇到了this question。但这部分回答了我的问题。

1 个答案:

答案 0 :(得分:3)

答案的未实现细节部分是builtins模块或Python 2中的__builtin__提供了对内置命名空间的访问。如果您想修改内置文件(通常不应该这样做),则可以在builtins上设置属性。

答案的实现细节部分是Python以多种方式跟踪内置函数。例如,每个框架对象都跟踪其使用的内置名称空间,这可能与其他框架的内置名称空间不同。您可以通过框架的f_builtins属性来访问它。当LOAD_GLOBAL指令无法在框架的全局变量中找到名称时,它将在框架的内置函数中looks。在大多数全局名称空间中也有一个__builtins__全局变量,但它不直接用于内置变量查找;相反,它用于在创建框架对象期间初始化certain situations中的f_builtins。全局builtins中还有一个PyInterpreterState引用,如果没有当前框架对象,则为used as default builtins