为什么打印列为内置?

tij*_*jko 3 python python-2.7

在阅读dir(__builtins__)python2.7中列出的对象时,我注意到关键字 print在那里.

现在在python3.5下我可以看到它print,exec现在是对象.

这是什么原因?为什么甚至__builtins__开始列出它?特别是这个关键字,如果它从未在那里分组,它会有什么不同.似乎import也有可能被列入那里?

use*_*ica 5

print__builtins__因为真的有一个print内置的功能.如果这样做from __future__ import print_function,print关键字将被禁用并print引用内置.

exec并且import不在__builtins__.你最有可能把它们混合起来使用内置的功能eval__import__.

抛开:不要使用__builtins__.它是一个实现细节,它的价值在不同的上下文中是不同的.如果您想要包含所有内置名称的模块,请使用import __builtin__import builtins在Python 3中.