一、__name__
1.1 这个 __name__ 拿来做什么的?
__name__是一个特别的变量,当我们与模块交互时使用,可以让我们区分哪些模块(常指:包和库)导入或者不导入。
1.2 这个 __name__ 变量可能取什么值?
当你执行一段脚本时,这段脚本的默认__name__被赋值为字符串‘__main__’,当这段脚本被导入程序时,__name__被赋值为脚本的文件名。if条件判断为false,就不会继续执行被导入脚本接下来的代码,故if __name__ == '__main__'具有阻止程序自动执行的作用。
二、Module
模块是一个独立的代码片段,逻辑上与其他的代码段分开,可以进行复用。模块可以是库文件,函数,类以及Python文件。
三、Demo(新建两个.py文件,一个是my_script.py,一个是import_my_scrip.py)
3.1 验证脚本默认赋值__name__为__main__
1 # -*- coding: utf-8 -*- 2 """ 3 @Time : 2023/3/3 10:14 4 @Auth : T 5 @File :nameScript.py 6 @IDE :PyCharm 7 """ 8 9 10 # 情况一:直接运行脚本 11 def main(): 12 myFunction() # 调用myfunction函数 13 14 15 def myFunction(): 16 print("变量__name__=", __name__) # 输出结果:变量__name__= __main__ 17 18 19 if __name__ == "__main__": 20 main()
流程:
3.3 验证当复用其他脚本文件时__name__的值
1 # -*- coding: utf-8 -*- 2 """ 3 @Time : 2023/3/3 10:13 4 @Auth : T 5 @File :importingScript.py 6 @IDE :PyCharm 7 """ 8 9 # 情况二:从外部脚本重用myFunction函数 10 from nameScript import myFunction 11 12 if __name__ == "__main__": 13 print("变量__name__=", __name__) # 变量__name__= __main__ 14 myFunction() # 变量__name__= nameScript
流程:
3.2 验证__name__是否有阻止程序自动执行作用
第一种情况:被调用脚本没有if __name__ == "__main__"
1 # -*- coding: utf-8 -*- 2 """ 3 @Time : 2023/3/3 10:14 4 @Auth : T 5 @File :nameScript.py 6 @IDE :PyCharm 7 """ 8 9 10 # 情况一:脚本如果没有if __name__ == "__main__": 11 def main(): 12 print("变量__name__2=", __name__) 13 myFunction() # 调用myFunction函数 14 15 16 def myFunction(): 17 print("变量__name__1=", __name__) # 输出结果:变量__name__= __main__ 18 19 20 # if __name__ == "__main__": 21 main()
# -*- coding: utf-8 -*- """ @Time : 2023/3/3 10:13 @Auth : T @File :importingScript.py @IDE :PyCharm """ # 情况二:外部脚本如果没有if __name__ == "__main__": from nameScript import myFunction if __name__ == "__main__": myFunction() # 会一直执行nameScript中的代码,首先调用函数main(),然后输出一个结果,接着调用main()中的myFunction,输出一个结果,再最后调用myfunction函数,共三次结果
输出结果:
第二种情况:被调用脚本有if __name__ == "__main__"
1 # -*- coding: utf-8 -*- 2 """ 3 @Time : 2023/3/3 10:14 4 @Auth : T 5 @File :nameScript.py 6 @IDE :PyCharm 7 """ 8 9 10 # 情况二:脚本如果有if __name__ == "__main__": 11 def main(): 12 print("变量__name__2=", __name__) 13 myFunction() # 调用myFunction函数 14 15 16 def myFunction(): 17 print("变量__name__1=", __name__) # 输出结果:变量__name__= __main__ 18 19 20 if __name__ == "__main__": 21 main()
1 # -*- coding: utf-8 -*- 2 """ 3 @Time : 2023/3/3 10:13 4 @Auth : T 5 @File :importingScript.py 6 @IDE :PyCharm 7 """ 8 9 # 情况二:外部脚本如果有if __name__ == "__main__": 10 from nameScript import myFunction 11 12 if __name__ == "__main__": # 外部脚本如果有if __name__ == "__main__": 13 myFunction() # 会一直执行nameScript中的代码,if __name__ == "__main__"判断为false,不调用main()函数中的输出语句,只调用myFunction()函数,输出一个结果
输出结果:
四、参考资料
https://zhuanlan.zhihu.com/p/57309137
https://www.freecodecamp.org/news/whats-in-a-python-s-name-506262fe61e8
标签:__,myFunction,name,10,python,main,脚本 From: https://www.cnblogs.com/tqqnb/p/17175011.html