论 if __name__ == '__main__':

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

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

  1. 新建aaa.py,输入如下代码
    def myfunc():
        print("b")
    
    print("a")
    myfunc()

    运行后是这样的

    a
    b
    
    #[QPython] Press enter to exit ...
  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__'的真正意义。

  3. 之后我们把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的代码人  阅读(53)  评论(0编辑  收藏  举报