python __name__全局变量给出的输出与预期不同

时间:2017-11-16 08:44:44

标签: python global-variables python-module python-interactive pythoninterpreter

我正在尝试使用python模块。

我的代码是,

python module.py

当我用解释器

执行代码时
main

它给出输出(即模块名称为)

module

当我将模块导入另一个文件并调用模块时,它将输出作为模块名称(预期)。

"scripts": {
   "build-prod": "node --max_old_space_size=5048 ./node_modules/@angular/cli/bin/ng build --prod --aot --no-sourcemap"
}

根据docs,它应该给出模块名称作为输出。为什么输出变化?

1 个答案:

答案 0 :(得分:2)

主脚本始终称为__main__。这是完全正确的行为。

从您链接到的同一页面,  在preceding Executing modules as scripts section中,您会找到:

  

使用

运行Python模块时
python fibo.py <arguments>
     

模块中的代码将被执行,就像您导入它一样,但__name__设置为"__main__"

对于您导入的所有内容,__name__将反映首次可用的模块名称。

另见Interface options documentation

  

<script>

     

[...]

     

如果脚本名称直接引用Python文件,则包含该文件的目录将添加到sys.path的开头,并且该文件将作为__main__模块执行。

__main__ Top-level script environment documentation

  

此模块表示解释器主程序执行的(否则为匿名)作用域 - 从标准输入,脚本文件或交互式提示读取命令。