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__))
参考: