-2

我正在尝试动手操作 python 模块。

我的代码是,

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

printname()

当我用解释器执行代码时

python module.py

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

main

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

module

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

4

1 回答 1

2

主脚本总是被调用__main__。这是完全正确的行为。

在您链接到的同一页面中,在前面的Executing modules as scripts部分中,您会发现:

当您运行 Python 模块时

python fibo.py <arguments>

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

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

另请参阅接口选项文档

<script>

[...]

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

__main__顶级脚本环境文档

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

于 2017-11-16T08:51:13.963 回答