Python中__name__ == __main__总结

一、语义解释

1.__name__

  • 是python内置属性,是系统全局变量!每一个py文件都有一个属于自己的__name__
  • 如果py文件作为模块被导入(import),那么__name__就是该py文件的文件名(模块名)
  • 如果py文件直接运行时,那么__name__默认等于字符串”__main__“

举个例子就是:假如你名字是张三,在朋友眼中,你是张三(__name__ == '张三');在你自己看来,你就是你自己(__name__ == '__main__')

2.”__main__“:
实际上就是一个字符串,用来鉴别程序入口,没有太多花里胡哨的东西

3.__name__ == "__main__"

  • 新建一个ma_name.py文件,作为模块文件:
1 def print_name():
2     print("my_name.py__name__:",__name__)
3 
4 def print_number():
5     print("1234567")
6 
7 if __name__ == "__main__":
8     print_name()
  • 新建一个python_main.py文件,作为启动文件:
 1 import ma_name
 2 
 3 def print_name():
 4     ma_name.print_number()                          ###只有这样模块化引用时才会输出
 5     ma_name.print_name()                            ###ma_name.py作为导入模块,该模块__name__等于文件名(模块名)
 6     print("pthon_main.py __name__:",__name__)
 7 
 8 if __name__ == "__main__":                          ###py文件直接运行时,__name__默认等于字符串"__main__"
 9     print_name()                                    ###py文件作为模块被导入时(import),__name__就是该py文件的文件名
10 
11 #输出结果
12 1234567
13 my_name.py__name__: ma_name
14 pthon_main.py __name__: __main__

二、作用是什么(why)

1.作为启动文件的main函数入口

2.用于代码调试过程,main函数内if语句体(body)的内容也只有在对应文件下(自己)才会执行,而这一特点在python设计模块(module)时带来极大的便利。

当我们设计好一个模块后,我们想运行一些测试代码,而这些测试代码我们不希望在别的文件import本模块时引入,造成干扰。

解决方案就是我们把测试代码放入if __name__ == '__main__'之后,这样,只有在运行测试本模块(本文件)时,测试代码才会执行。

如果想执行其他模块的if内容,需要引用if内的确定函数才行,比如ma_name.print_number()

 

posted @ 2022-08-31 10:02  几何0814  阅读(580)  评论(0编辑  收藏  举报