唤醒手腕Python全栈工程师学习笔记(底层原理篇)

01、内建名称空间

在Python中,有一个内建模块,该模块中有一些常用函数,变量和类。

而该内建模块在Python启动后、且没有执行程序员所写的任何代码前,Python首先会自动加载该内建模块到内存。

另外,该内建模块中的功能可以直接使用,不用在其前添加内建模块前缀,其原因是对函数、变量、类等标识符的查找是按LEGB法 则,其中B即代表内建模块。

__builtin__builtins的区别

在Python2.X版本中,内建模块被命名为__builtin__,而到了Python3.X版本中,却更名为builtins,二者指的都是同一个东西,只是名字不同而已。

当使用内建模块中函数,变量和类等功能时,可以直接使用,不用添加内建模块的名字,也不用手动导入内建模块。但是,如果想要向内建模块修改或者添加一些功能,以便在程序其他地方使用时, 这时需要手动import。

builtins就是内建模块的一个引用

虽然是一个引用,但builtins和内建模块是有一点区别的:

要想使用内建模块,都必须手动import内建模块,而对于builtins却不用导入,它在任何模块都直接可见, 有些情况下可以把它当作内建模块直接使用。

builtins虽是对内建模块的引用,但这个引用要看是使用builtins的模块是哪个模块:

在主模块main中:

builtins是对内建模块builtin本身的引用,即builtins完全等价于builtin,二者完全是一个东西,不分彼此。

在非main模块中:

builtins仅是对builtin.dict的引用,而非builtin本身。它在任何地方都可见。此时builtins的类型是字典。

上一篇:Ubuntu18.04开机挂载硬盘


下一篇:Microsoft Defender 高级威胁防护