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
过于喧嚣的孤独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__的引⽤。