【问题标题】:python __name__ global variable gives different output than expectedpython __name__ 全局变量给出的输出与预期不同
【发布时间】:2018-04-29 17:22:05
【问题描述】:

我正在尝试使用 python 模块。

我的代码是,

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

printname()

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

python module.py

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

main

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

module

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

【问题讨论】:

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


【解决方案1】:

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

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

当你运行 Python 模块时

python fibo.py <arguments>

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

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

另见Interface options documentation

&lt;script&gt;

[...]

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

还有__main__ Top-level script environment documentation

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

【讨论】:

    猜你喜欢
    • 2022-07-06
    • 1970-01-01
    • 2019-07-16
    • 1970-01-01
    • 2022-01-21
    • 1970-01-01
    • 2014-02-08
    • 1970-01-01
    • 2019-12-12
    相关资源
    最近更新 更多