| 導航:起始頁 > Dive Into Python > 第一個 Python 程序 > 測試模塊 | << >> | ||||
深入 Python :Dive Into Python 中文版Python 從新手到專家 [Dip_5.4b_CPyUG_Release] |
|||||
所有的 Python 模塊都是對象,并且有幾個有用的屬性。您可以使用這些屬性方便地測試您所編寫的模塊。下面是一個使用 if __name__ 的技巧。
在繼續學習新東西之前,有幾個重要的觀察結果。首先,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__ 技巧有效。點擊窗口右上角的黑色三角,彈出模塊的屬性菜單,確認 被選中。 | |
<< 代碼縮進 |
| 1 | 2 | 3 | 4 | 5 | 6 | |
內置數據類型 >> |