python里面 if __name__ == "__main__" 是干什么的

又来骗更啦。
python里面 if __name__ == “__main__“: 是干什么的?

今天看到一个答案第二个回答讲得很清楚,竟然不是最高赞。我简单搬运一下。

简单的讲,这是为了标志当前的module(当前这个python文件),既能够直接运行,也能够作为module被其他代码import。

  • 如果是直接运行当前这个python文件,那么变量 __name__会被设置为”__main__“,那么代码运行到这个if语句的时候,可以继续运行if代码块中的内容。
  • 如果是从其他地方调用当前这个python文件,那么变量不是 “__main__“,不会运行if代码块中的内容。

如果讲不清楚,直接看代码吧。
第一个文件

# file one.py
def func():
    print("func() in one.py")

print("top-level in one.py")

if __name__ == "__main__":
    print("one.py is being run directly")
else:
    print("one.py is being imported into another module")

第二个文件

# file two.py
import one

print("top-level in two.py")
one.func()

if __name__ == "__main__":
    print("two.py is being run directly")
else:
    print("two.py is being imported into another module")

如果运行

one.py```
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
结果会是

top-level in one.py
one.py is being run directly

如果运行```python two.py```
结果会是

top-level in one.py
one.py is being imported into another module
top-level in two.py
func() in one.py
two.py is being run directly

当one被import的时候,变量```\_\_name\_\_```的值不是```"\_\_main\_\_"```而是```"one"