python编程中的if __name__ == 'main': 的作用和原理

Deadly 提交于 2019-12-05 02:31:45

python的文件有两种使用的方法:第一是直接作为脚本执行,第二是import到其他的python脚本中被调用(模块重用)执行。

因此if __name__ == 'main': 的作用就是控制这两种情况执行代码的过程,在if __name__ == 'main': 下的代码只有在第一种情况下(即文件作为脚本直接执行)才会被执行,而import到其他脚本中是不会被执行的。eg: 

             在test.py写入如下代码:
  • print("I love chengdu!")
    if __name__ == '__main__':
        print("I love you!")

              运行test.py,结果如下。即,if__name__='__main__':  语句之前和之后的代码都被执行。

    • I love chengdu!
      I love you!

               然后在同一个文件夹中创建一个import_test.py的脚本,只输入如下代码:

    • import test

                执行import_test.py脚本,输出结果如下:

    • I love chengdu!

                    只输出了第一行字符串,即,if__name__=='__main__':  之前的语句被执行,之后的没有被执行。

 

原理:

        每个python模块(python文件,也就是此处的test.py和import_test.py)都包含内置的变量__name__,当直接执行模块的时候,__name__等于文件名(包含了后缀.py);如果import到其他模块中,则__name__等于模块名称(不包含后缀.py)。而 '__main__' 等于当前执行文件的名称(包含了后缀.py)。进而当模块被直接执行时,__name__=='__main__'为真。

        同样举例说明,我们在test.py脚本if__name__=='__main__':  之前加入print(__name__),即将__name__打印出来,可以看出,此时变量__name__的值为:__main__ 。模块内容和执行结果如下:

    • print("I love chengdu!")
      print(__name__)
      if __name__ == '__main__':
          print("I love you!")
      
      >>>----------执行结果如下------
      I love chengdu!
      __main__
      I love you!

再执行import_test.py,模块内容和执行结果如下:

    • import test
      
      >>>--------执行结果如下--------
      
      I love chengdu!
      test

 

 此时,test.py中的__name__变量值为test,不满足__name__=='main' 的条件,因此无法执行其后的代码。

 

 

 

                      

 

 

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!