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



我正在尝试亲身体验python模块。

我的代码是

#filename:module.py
def printname():
print __name__
printname()

当我使用解释器执行代码时

python module.py

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

main

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

module

根据文档,它应该给出模块名称作为输出。为什么产量会有变化??

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

从您链接到的同一页面,在前面的将模块作为脚本执行部分中,您会发现:

当您使用运行Python模块时

python fibo.py <arguments>

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

对于导入的所有内容,__name__将反映它最初可用的模块名称。

另请参阅接口选项文档:

<script>

[…]

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

__main__顶级脚本环境文档:

此模块表示解释器主程序执行的范围(否则是匿名的)——从标准输入、脚本文件或交互式提示中读取的命令。

相关内容

  • 没有找到相关文章