为什么这样做? if - __name__ =='__ main__'

时间:2009-12-29 07:27:07

标签: python

  

可能重复:
  What does <if name==“main”:> do?

考虑以下代码:

if __name__ == '__main__':
    import pdb
    pdb.run("interact()\n")

以下行是什么意思?

if(__name__=='__main__')

我昏了过去。

4 个答案:

答案 0 :(得分:13)

__name__是在执行的python程序中自动设置的变量。如果您import来自其他程序的模块,__name__将被设置为模块的名称。如果您直接运行程序,__name__将设置为__main__

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

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习语。

答案 1 :(得分:9)

如果此模块作为独立程序运行,则会出现这种情况。这样,某些东西既可以作为由另一个程序导入的模块,也可以作为独立程序,但只有在作为程序执行时才执行if语句中的代码。

答案 2 :(得分:4)

这是检查您是否直接运行脚本或是否包含在库中。

运行这样的python脚本时:

python myScript.py

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

答案 3 :(得分:1)

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

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