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

zjm*_*126 8 python

可能重复:
<if name ==" main ":>做什么?

考虑以下代码:

if __name__ == '__main__':
    import pdb
    pdb.run("interact()\n")
Run Code Online (Sandbox Code Playgroud)

以下行是什么意思?

if(__name__=='__main__')
Run Code Online (Sandbox Code Playgroud)

我昏了过去.

Nou*_*him 13

__name__是一个在执行的python程序中自动设置的变量.如果您import的模块来自另一个程序,__name__则会将其设置为模块的名称.如果直接运行程序,__name__将设置为__main__.

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

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"
Run Code Online (Sandbox Code Playgroud)

特技.这是一个常见的Python习语.


Bri*_*ell 9

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