在阅读dir(__builtins__)python2.7中列出的对象时,我注意到关键字 print在那里.
现在在python3.5下我可以看到它print,exec现在是对象.
这是什么原因?为什么甚至__builtins__开始列出它?特别是这个关键字,如果它从未在那里分组,它会有什么不同.似乎import也有可能被列入那里?
print是__builtins__因为真的有一个print内置的功能.如果这样做from __future__ import print_function,print关键字将被禁用并print引用内置.
exec并且import不在__builtins__.你最有可能把它们混合起来使用内置的功能eval和__import__.
抛开:不要使用__builtins__.它是一个实现细节,它的价值在不同的上下文中是不同的.如果您想要包含所有内置名称的模块,请使用import __builtin__或import builtins在Python 3中.