首页 > 深入Python > 开始了解Python > 测试模块 | << >> | ||||
diveintopython.org Python for experienced programmers |
Python模块是对象,并且有几个有用的属性。在编写模块时,你可以利用这一点更容易地测试模块。
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__被选中。 |
进一步阅读
缩近代码 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
字典 101 |