2.6. 测试模块

所有的 Python 模块都是对象,并且有几个有用的属性。您可以使用这些属性方便地测试您所编写的模块。下面是一个使用 if __name__ 的技巧。


if __name__ == "__main__":

在继续学习新东西之前,有几个重要的观察结果。首先,if 表达式无需使用圆括号括起来。其次,if 语句以冒号结束,紧跟其后的是缩进代码

C 一样,Python 使用 == 做比较,使用 = 做赋值。与 C 不一样,Python 不支持行内赋值,所以不会出现想要进行比较却意外地出现赋值的情况。

那么为什么说这个特殊的 if 语句是一个技巧呢?模块是对象,并且所有的模块都有一个内置属性 __name__。一个模块的 __name__ 的值取决于您如何应用模块。如果 import 模块,那么 __name__ 的值通常为模块的文件名,不带路径或者文件扩展名。但是您也可以像一个标准的程序一样直接运行模块,在这种情况下 __name__ 的值将是一个特别的缺省值,__main__

>>> import odbchelper
>>> odbchelper.__name__
'odbchelper'

只要了解到这一点,您就可以在模块内部为您的模块设计一个测试套件,在其中加入这个 if 语句。当您直接运行模块,__name__ 的值是 __main__,所以测试套件执行。当您导入模块,时时彩计划软件公式:__name__ 的值就是别的东西了,所以测试套件被忽略。这样使得在将新的模块集成到一个大程序之前开发和调试容易多了。

MacPython 上,需要一个额外的步聚来使得 if __name__ 技巧有效。点击窗口右上角的黑色三角,弹出模块的属性菜单,确认 Run as __main__ 被选中。

进一步阅读

吉林时时彩 时时彩平台排行 下载现金赌时时彩软件 加时时彩群的好方法 先知者的软件
时时彩团队群绑定送钱 怎么举报时时彩平台 时时彩后四胆码软件 3d时时彩lm0 重庆时时彩开奖直播168
网赌时时彩有作假吗 快线中国时时彩平台 一诺时时彩软件v10 慧眼软件 彩票网站制作多少钱
为什么时时彩先赢后输 时时彩黑平台查询系统 宝宝时时彩软件 时时彩注册送28元体验金 时时彩软件下载crsky
时时彩平台 云南今天11选5开奖公告 二八杠下载 浙江快乐12走势图总汇 11选5怎么赚钱
陕西十一选五最大遗漏 幸运飞艇冠军走势图 山东十一选五开奖视频 深圳风采开奖结果 喜力国际娱乐城
3d试机号麦久网 江苏快3走势图今天 福建31选7开奖时间 山西泳坛夺金走势图 怎么开一个时时彩网站
11选五历史遗漏 江苏十一选五走势图 河北快3和值遗漏值尾走势图 喜来登好运彩3d图库 麦久3d试机号