Python中的内建模块builtins


Python中的内建模块builtins

一、builtins简介

builtins是Python中的一个模块。该模块提供对Python的所有“内置”标识符的直接访问;
在Python解释器启动后,且没有执行程序员所写的任何代码前,Python会首先加载builtins模块到内存,然后把內建模块的命名空间导入到当前代码的global作用域中,然后我们就能直接使用內建函数。
在Python2.X版本中,内建模块被命名为__builtin__,而到了Python3.X版本中,却更名为builtins
如果想要向内建模块中添加一些功能,以便在任何模块中都能直接使用而不用再进行import,这时就可以导入builtins模块,在builtins模块的命名空间(即__dict__属性)中添加该功能。

二、实现方式

import builtins

class people:
    def __init__(self):
        self.name = 'lsy'
        builtins.msg = self.msg
        builtins.__dict__['msg_2'] =self.msg


    def msg(self):
        print(self.name)


if __name__ == '__main__':
    lsy = people()
    lsy.msg()
    msg()
    msg_2()

三、关于__builtins__

builtins 同时存在于python2和Python3,并且功能相同。它就是对内建模块一个引用.
在主模块__main__中: __builtins__是对内建模块本身的引用,即__builtins__完全等价于builtins,二者完全是一个东西,不分彼此.此时,__builtins__的类型是模块类型。
在非__main__模块中:__builtins__仅是对builtins.__dict__的引用,而非builtins本身。它在任何地方都可见。此时__builtins__的类型是字典。

例程如下:

import builtins
from new_func import func

print(type(builtins))
func()
def func():
    print(type(__builtins__))


参考:

python3 builtins和__builtins__


文章作者: BITBCI
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 BITBCI !
  目录