Python __name__=='__main__'作用详解


Python __name__=='__main__'作用详解

在阅读别人编写的自定义模块时,你会经常看到下面这句话:

Python 全选
if __name__ == '__main__':

这一行代码的作用是什么?本节详细解释其功能如下。

一般情况下,当我们写完自定义模块后,我们会写一个测试代码来检查一些模块中的每个功能是否能够成功运行。例如,创建一个candf.py文件并编写以下代码:

Python 全选
'''
摄氏度和华氏度的相互转换模块
'''
def c2f(cel):
    fah = cel * 1.8 + 32
    return fah
def f2c(fah):
    cel = (fah - 32) / 1.8
    return cel
def test():
    print("测试数据:0 摄氏度 = %.2f 华氏度" % c2f(0))
    print("测试数据:0 华氏度 = %.2f 摄氏度" % f2c(0))
test()

单独运行此模块文件,您可以看到以下结果:

 
测试数据:0 摄氏度 = 32.00 华氏度
测试数据:0 华氏度 = -17.78 摄氏度

在candf.py模块文件的基础上,在同一目录下创建另一个demo.py文件,并编写以下代码:

Python 全选
import candf
print("32 摄氏度 = %.2f 华氏度" % candf.c2f(32))
print("99 华氏度 = %.2f 摄氏度" % candf.f2c(99))

运行demo.py文件,运行结果如下:

 
测试数据:0 摄氏度 = 32.00 华氏度
测试数据:0 华氏度 = -17.78 摄氏度
32 摄氏度 = 89.60 华氏度
99 华氏度 = 37.22 摄氏度

如您所见,Python解释器一起运行模块(candf.py)中的测试代码,这不是我们想要的结果。避免这种情况的关键是让Python解释器知道目前要运行的级别代码是模块文件本身还是其他导入模块的程序。

为了实现这一点,我们需要使用Python内置的系统变量__name__,该变量用于标识模块的模块名。例如,在demo.py程序文件中,添加以下代码:

Python 全选
print(__name__)
print(candf.__name__)
其运行结果为:
__main__
candf

可以看到,当前运行的程序的__name__的值是__main__,而导入到当前程序的模块的__name__的值是它自己的模块名。

 

因此,如果_ _ name _ _ = =' ___ main __ ':函数是保证这个表达式只有在模块单独运行时才有效,然后就可以输入这个判断语法并在其中执行测试代码;相反,如果只是作为模块导入到其他程序文件中,这个表达式就不会有效,在其他程序运行时也不会执行这个判断语句中的测试代码。

版权声明:本文为YES开发框架网发布内容,转载请附上原文出处连接
管理员
上一篇:HEU KMS Activator -全能Windows/Office激活神器
下一篇:Python数组List检索 三种方法从数组List中检索出符合要求的元素
评论列表

发表评论

评论内容
昵称:
关联文章

Python __name__=='__main__'作用详解
Webpack讲解:devTool中SourceMap模式详解
YESWEB 开发框架 路由配置文件 作用原理
Python Windows服务
position: sticky;设置无效,不起作用
python四种配置文件
Python 重构Print 日志记录
Python使用SQL Server数据库
Python pyinstaller 打包参数说明
Python安装
Python Selenium ChromeDriver 规避检测
详解ElasticAPM实现微服务的链路追踪(NET)
Python Selenium使用火狐浏览器驱动
Python 打印日志格式,并且支持不同颜色和背景色
.NET Core中使用编码GB2312报错‘GB2312‘ is not a supported encoding name 解决方案
python安装pythoncom模块
Python暂停程序执行
Python多线程中试用wmi报错
JS合并两个数组的3种方法详解
熔断和降级的初步详解实现(NET Core控制台输出讲解Polly)

联系我们
联系电话:15090125178(微信同号)
电子邮箱:garson_zhang@163.com
站长微信二维码
微信二维码