Python __builtin__模块
你有没有好奇过当我们打开Python后就可以直接使用str(),list(),eval(),print(),max()这样的函数,而不用导入任何模块?
其实原因很简单,就是当我们打开Python解释器之后,它会自动导入一些模块,所以我们就可以直接使用很多函数,它们有一个名字,叫内建函数。
我们可以利用dir()来查看被自动导入的模块都有哪些,我们在一个空文件里打印dir():
里面有一个叫__builtins__的模块:
会看到我们熟悉的内建函数的名称,如list、dict、str等,当然还有一些异常和其它属性。
打印__builtins__,会发现__builtins__其实是引用了__builtin__模块而已,这说明真正的模块是__builtin__
__builtins__与__builtin__的深入区别:
他们俩的深入区别主要要看是否是在主模块下进行的操作
1、如果是在主模块下进行操作,那两者就没有区别
2、如果不是在主模块中进行操作,__builtins__就是对__builtin__.__dict__的一个引用
先创建一个test.py模块,后面我们需要在Python交互器中导入它,那么这时候对于test模块来说,它就不是主模块了。如下:
test.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | import __builtin__ print 'Module name:' , __name__ print '*==test __builtin__ and __builtins__==*' print '__builtin__ == __builtins__' , __builtin__ = = __builtins__ print '__builtin__ is __builtins__' , __builtin__ is __builtins__ print 'id(__builtin__)' , id (__builtin__) print 'id(__builtins__)' , id (__builtins__) print '=' * 50 print '*==test __builtin__.__dict__ and __builtins__==*' print '__builtin__.__dict__ == __builtins__' , __builtin__.__dict__ = = __builtins__ print '__builtin__.__dict__ is __builtins__' , __builtin__.__dict__ is __builtins__ print 'id(__builtin__)' , id (__builtin__.__dict__) print 'id(__builtins__)' , id (__builtins__) |
从输出的结果可以看出__builtins__就是对__builtin__.__dict__的引用。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,携手博客园推出1Panel与Halo联合会员
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步