首页 > 深入Python > 开始了解Python > 测试模块 | << >> |
diveintopython.org |
|
Python for experienced programmers |
Python模块是对象,并且有几个有用的属性。在编写模块时,你可以利用这一点更容易地测试模块。
if __name__ == "__main__":
在开始学习好东西之前,有两点要说明。第一,在 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__被选中。 |
进一步阅读 |
|
« 缩排代码 | 字典 101 » |