<dd id="sga4y"><optgroup id="sga4y"></optgroup></dd>
<nav id="sga4y"><code id="sga4y"></code></nav>
  • <optgroup id="sga4y"></optgroup>

    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__ 被選中。

    進一步閱讀

    97av