我正在尝试亲身体验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__
顶级脚本环境文档:
此模块表示解释器主程序执行的范围(否则是匿名的)——从标准输入、脚本文件或交互式提示中读取的命令。