[Python] if __name__ == ‘__main__‘的作用
在编写Python程序的时候,总是习惯性的在文件的末尾添加这么一段代码
if __name__ == "__main__":
...
从上述代码可以看出if __name__ == "__main__":是个条件语句,判断__name__这个变量是否等于__main__
我们在脚本demo.py文件中执行dir()函数,获取当前模块的变量名,并判断当前模块是否包含__name__变量
# demo.py
print(dir())
# True
print('__name__' in dir())
上述脚本文件中我们没有定义任何变量,从而可知道__name__是Python内置的一个属性
我们打印__name__,看看该变量的值
# demo.py
print(dir())
# True
print('__name__' in dir())
print('__name__:',__name__) # __name__: __main__
从上述结果可以了解到变量__name__的值为__main__,我们继续在文件的末尾添加 if __name__ == "__main__":代码
# demo.py
# True
print('__name__' in dir())
print('__name__:',__name__)
print('Hello123')
if __name__ == '__main__':
print('Hello456')
运行结果如下所示
True
__name__: __main__
Hello123
Hello456
提示Tips
__name__ 是个变量,每个.py文件都有这个变量,'__main__ ' 是个普通的字符串,不是变量,但可以作为变量的值进行使用
我们在同一文件夹下创建一个名为import_demo.py脚本文件,输入如下代码
# import_demo.py
import demo
上述脚本运行结果如下所示
True
__name__: demo
Hello123
我们从上述结果可以发现,运行import_demo.py脚本后,demo.py脚本中的__name__变量值是'demo',由于__name__变量值不再是'__main__',所以 __name__ == "__main__"的结果是False,不执行print('Hello456')操作
提示Tips
变量__name__所在的 .py 文件没被别的 .py 文件调用时,其值是'__main__ '
变量__name__所在的 .py 文件被别的 .py 文件调用时,它的值就不再是 '__main__ '了,而是变成它所在 .py的文件名
练习案例
定义一个实现加法功能的py代码
# add_.py
def add(a, b):
return a + b
res = add(2, 3)
print(res)
定义另一个py代码,导入add_.py中的add方法,类似模块导入
# use_.py
from add_ import add
res = add(2, 3)
print(f'结果是:{res}')
运行结果如下所示
5
结果是:5
我们只想要一个结果5,但是结果输出两个,我们可以把add_.py代码中的测试代码,放在if __name__== '__main__':中,use_.py执行add()就不会执行测试代码
# add_.py
def add(a, b):
return a + b
if __name__=='__main__':
res = add(2, 3)
print(res)
运行use_.py,输出结果如下所示
结果是:5
if __name__ == '__main__'的作用
python文件通常有两种使用方法:
① 作为脚本直接执行
② import到其他的 python 脚本中被调用执行
if __name__ == '__main__':的作用就是控制这两种情况执行代码的过程,在 if __name__ == '__main__':下的代码只有在第一种情况下才会被执行,而 import 到其他脚本中是不会被执行的
相关文章
- 【Python成长之路】python 基础篇 -- global/nonlocal关键字使用
- Python操作Mysql实例代码教程在线版(查询手册)_python
- Python描述符(descriptor)解密(转)
- python模块typing的作用
- 【Python】python对象与json相互转换
- Python 户外俱乐部·登顶纪念证书生成器
- Python每日一练(20230309)
- Python编程语言学习:基于python各种库(matplotlib、Image)利用多种方法展示图片或进行图片可视化之详细攻略
- Python语言学习之打印输出那些事:python输出图表和各种吊炸天的字符串或图画、版权声明(如README.md)等之详细攻略
- Python之matplotlib:基于matplotlib库利用python语言实现一张画布显示多张图的多种方法
- Python之tkinter:动态演示调用python库的tkinter带你进入GUI世界(Find/undo事件)
- Python 实现个人博客系统(附零基础python学习资料)
- 〖Python WEB 自动化测试实战篇③〗- python-selenium环境配置搭建
- 2022年,Python 编程需要养成这 9 个好习惯
- Python学习63:多线程
- python deepcopy的替代方案
- (57)C#里的WEBAPI的客户端怎么样与Python服务器联调
- python自动化测试学习-Python测试框架之unittest和pytest
- python str find & index 联系
- Python 头部 #!/usr/bin/python 和 #!/usr/bin/env 的区别
- 多版本Python共存时pip给指定版本的python安装package的方法
- 【Python】Visual Studio Code 安装&&使用 hello python~~~~
- Python——break、continue、pass语句作用
- python中if verbose是啥意思呀讲解