Python脚本中__name__有哪些不同的可能值,它们是什么意思?

Xio*_*iov 8 python

检查是否__name__ == '__main__'是在直接调用文件时运行某些代码的常用习惯用法,而不是通过模块.

在为Django的manage.py编写自定义命令的过程中,我发现自己需要使用code.InteractiveConsole,这会给标准python shell的用户带来影响.在我正在做的一些测试代码中,我发现在我试图执行的脚本中,我得到的__name____console__,这导致我的代码(依赖于__main__)不能运行.

我很确定我的原始实现中有一些东西要改变,但它让我想知道__name__可能有什么不同的东西.我找不到关于可能值的任何文档,也没有找到它们的含义,所以这就是我最终的结果.

sun*_*ang 8

来自类code.InteractiveInterpreter([locals])的文档:
可选的locals参数指定将在其中执行代码的字典; 它默认为新创建的字典,键'__name__'设置为'__console__'和键'__doc__'设置为None.也许u能电源设为当地人的说法,设置__name____main__,或更改测试条款

if __name__ == '__main__'
to  
if __name__ in set(["__main__", "__console__"])
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你.


Alg*_*ias 5

__name__通常是模块名称,但是'__main__'当有问题的模块被直接执行而不是被另一个模块导入时,它会更改为。

我知道其他值只能由您正在运行的代码直接设置。