为什么会这样?如果 - __name__ == '__main__
看看这段代码:
if __name__ == '__main__':
import pdb
pdb.run("interact()\n")
下面这一行是什么意思呢?
if(__name__=='__main__')
我晕倒了。
4 个回答
4
这段话是在检查你是直接运行这个脚本,还是把它当作库来使用。
当你像这样运行一个Python脚本:
python myScript.py
它会发送一个参数,告诉你要先运行程序的第一个方法,这个方法通常叫做“main”。所以当__name__
等于__main__
时,你就知道这个程序是从命令行执行的,或者是你双击打开的。
14
__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"
这个小技巧。这是一个常见的 Python 写法。
10
如果这个模块是作为一个独立程序运行的,那么这个条件就会成立。这样一来,这个模块可以被其他程序导入使用,也可以单独运行,但只有在作为程序运行的时候,if
语句里的代码才会被执行。