在阅读python2.7中dir(__builtins__)
下列出的对象时,我注意到keyword print
就在那里。
现在在python3.5下我可以看到print
和exec
现在是对象。
这是什么原因?为什么甚至在__builtins__
下列出它?特别是这个关键字,如果它从未在那里分组,它会有什么不同。似乎import
可能还有一个案例被列在那里?
答案 0 :(得分:5)
print
位于__builtins__
,因为确实存在print
内置函数。如果您执行from __future__ import print_function
,则print
关键字已停用,print
会引用内置关键字。
exec
和import
不在__builtins__
。您很可能将它们与内置函数eval
和__import__
混合在一起。
暂且不说:不要使用__builtins__
。它是一个实现细节,它的价值在不同的环境中是不同的。如果您希望模块包含所有内置名称,请在Python 3中使用import __builtin__
或import builtins
。