关于Python:为什么要这样做? if – __name__ == ‘__main__’

Why does it do this ? if - __name__ == '__main__'

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
What does do?

考虑此代码:

1
2
3
4
if __name__ == '__main__':
    import pdb
    pdb.run("interact()
"
)

下面这一行是什么意思?

1
if(__name__=='__main__')

我昏过去了。


__name__是在执行python程序中自动设置的变量。如果您的模块来自另一个程序,那么__name__将被设置为该模块的名称。如果直接运行程序,__name__将设置为__main__

因此,如果您只希望在从命令行运行程序而不希望在导入时发生某些事情(例如,库的单元测试),则可以使用

1
2
3
4
5
6
if __name__ =="__main__":
  # will run only if module directly run
  print"I am being run directly"
else:
  # will run only if module imported
  print"I am being imported"

诡计。这是一个常见的python习惯用法。


如果此模块作为独立程序运行,则为真。这样,某些东西既可以作为由另一个程序导入的模块,也可以作为独立程序,但如果作为程序执行,则只能执行if语句中的代码。


这是一个检查,看您是否直接运行脚本,或者脚本是否包含在库中。

当您运行这样的python脚本时:

1
python myScript.py

它发送一个参数,告诉您首先运行程序的方法,这被广泛称为"main",所以当__name____main__时,您知道程序是从命令行执行的,或者双击执行的。


他编写了一个python模块,打算通过import使用。

如果模块作为主python脚本传递给解释器,那么您引用的代码将运行。这将调用Python调试器下的interact()方法。