LOGO

写bug的代码人的博客

论 if __name__ == '__main__':

之前学习Python时,总是见到if __name__ == '__main__':,但我一直不知道是什么意思。之后做了一些demo,没有if __name__ == '__main__':也能运行,就没有深究。今天闲来无事(既然无事就要让他有事),就研究了一下。

注:因为我是学生党,所以用手机里的QPython OH代替Python运行环境。

1. 新建aaa.py,输入如下代码

def myfunc():
    print("b")

print("a")
myfunc()

2. 之后我们新建bbb.py

from aaa import myfunc

myfunc()
print("c")

你以为

b
c

#[QPython] Press enter to exit ...

实际上运行后

a
b
c

#[QPython] Press enter to exit ...

是不是很疑惑?明明我只调用了myfunc(),为什么连a也给我打印出来了?这才是if __name__ == '__main__'的真正意义。

之后我们把aaa.py的内容改成

def myfunc():
    print("b")

if __name__ == '__main__':
    print("a")
    myfunc()

运行之后的结果还是

a
b

#[QPython] Press enter to exit ...

再运行bbb.py

b
c

#[QPython] Press enter to exit ...

看,变成我们想要的了吧?根据结果我们可以看到,if __name__ == '__main__'下面的语句没有被运行。

总结:

__name__ 相当于模块的名字,'__main__'相当于本程序的名字。如果整个项目只有一个文件,那么if __name__ == '__main__'用不用都行。如果整个项目有两个及以上文件,那么就要把被引用文件中不希望在其他文件被使用的函数放在if __name__ == '__main__'下面。

 

Posted 2022-08-09 09:57 写bug的代码人

本文标签:

本文总阅读量?

文章作者   写bug的代码人

文章链接   https://bugcoder.asia/article/001.html

声明   本博客中的所有文章均使用《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》协议授权,所有代码均使用MIT开源协议