我正在尝试动手操作 python 模块。
我的代码是,
#filename:module.py
def printname():
print __name__
printname()
当我用解释器执行代码时
python module.py
它给出输出(即模块名称)
main
当我将模块导入另一个文件并在那里调用模块时,它会输出作为模块名称(预期)。
module
根据文档,它应该给出模块名称作为输出。为什么输出的变化?
我正在尝试动手操作 python 模块。
我的代码是,
#filename:module.py
def printname():
print __name__
printname()
当我用解释器执行代码时
python module.py
它给出输出(即模块名称)
main
当我将模块导入另一个文件并在那里调用模块时,它会输出作为模块名称(预期)。
module
根据文档,它应该给出模块名称作为输出。为什么输出的变化?
主脚本总是被调用__main__
。这是完全正确的行为。
在您链接到的同一页面中,在前面的Executing modules as scripts部分中,您会发现:
当您运行 Python 模块时
python fibo.py <arguments>
模块中的代码将被执行,就像您导入它一样,但
__name__
设置为"__main__"
.
对于您import的所有内容,__name__
将反映它首次可用的模块名称。
另请参阅接口选项文档:
<script>
[...]
如果脚本名称直接引用 Python 文件,则将包含该文件的目录添加到 sys.path 的开头,并将该文件作为
__main__
模块执行。
这个模块代表解释器的主程序执行的(否则是匿名的)范围——从标准输入、脚本文件或交互式提示中读取的命令。