考虑以下代码:
if __name__ == '__main__':
import pdb
pdb.run("interact()\n")
以下行是什么意思?
if(__name__=='__main__')
我昏了过去。
答案 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()
方法。