为什么print(__ name__)给'builtins'?

use*_*707 7 python pycharm

我正在使用pycharm.2017.1.2.我用py3环境安装了anaconda2.在Pycharm中,我使用的是Python3解释器,代码很简单:

print(__name__)
Run Code Online (Sandbox Code Playgroud)

在Pycharm的Python控制台中,它会打印出来builtins.

如果我单击"运行"按钮,它将main按预期打印.

为什么打印PyCharm Python控制台builtin而不是main

Joe*_*Joe 3

PyCharm Python 控制台实际上运行一个名为pydevconsole.py(应位于 C:\Program Files\JetBrains\PyCharm 2017.1.2\helpers\pydev\pydevconsole.py 中)的模块。该模块创建一个解释器并将其设置为该builtins模块的属性。

因此print(__name__)在 PyCharm 控制台上将显示builtins.

在执行期间(当您单击“运行”时),将调用您指定的 Python 解释器,而不是模块pydevconsole。因此print(__name__)显示__main__如预期。