为什么会这样?如果 - __name__ == '__main__

9 投票
4 回答
9727 浏览
提问于 2025-04-15 17:26

重复的问题:
if __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语句里的代码才会被执行。

撰写回答