上次和大家探討了關於Python模塊化編程的東東,可能大家會問了:我已經了解了Python模塊化編程的精髓了,但是我能不能自己定義模塊呢?
先說答案,答案是當然能哈~
下面就和大家探討一下關於定義模塊、說明模塊和測試模塊相關的東東,那我們就開始吧!
首先,說一下:定義模塊
首先來個靈魂拷問問題?模塊到底是啥呢?該怎麼定義自己的模塊呢?
模塊呀,當然就是Python程序了,到這可能你會說「廢話」,這還真不是廢話哈,因為所有的Python程序都可以作為模塊進行導入哦,也就是說,你隨便寫個Python程序,統統都可以作為模塊導入,並且只要你導入了模塊,你就可以肆無忌憚的使用該模塊內的所有成員了哦。
下面舉個「慄子」:
先對這個「慄子」簡單說明一下吧,在該「慄子」中呢,第1行執行了一條簡單的輸出語句哦,然後第3行定義了一個變量,然後又定義了一個say_hello()函數,最後定義了一個Friend類。到這你有木有發現呢?這和普通的Python程序木有啥區別哦,你的發現是對的哦,但這仍然可以作為模塊來導入哦。
到這可能大家又有問題了:那使用模塊有啥好處呢?好處當然有了,比如說像上面「慄子」中的代碼一樣,將需要使用的一些單元東東定義在模塊中,那麼在日後使用時不管哪個程序只要導入了這個模塊,這個程序就可以使用這個模塊中的所有東東了哦,這就是常說的復用,對於大工程開發的好處是大大滴,而且呢,使模塊,你還能避免每個程序都需要重新定義這些模塊中的東東的坑哦。
再補充一句:其實呢,模塊文件的文件名就是模塊名哦,比如上面「慄子」module1.py的模塊名就是module1哦。
好啦,說明白了定義模塊,下面就說一下說明模塊吧!
說明模塊
啥叫說明模塊呢?又是靈魂拷問哈?說明模塊說白了就是給模塊添加說明語言(文檔)哦!
因為在實際的工程開發,尤其是在大項目中,整個項目是由一個團隊共同完成的哦,每個人可能負責不能的東東,這時就需要為模塊編寫說明文檔了哦,因為如果木有說明文檔,你團隊中的其他成員看你的代碼可能就是一臉懵逼哦!
那該怎樣為模塊添加說明文檔呢?其實呢,還是挺簡單滴,你只有在模塊開始處定義一個字符串直接量就可以了哦。
還是舉個「慄子」吧:
上面「慄子」中紅色方框中的這段話就是為模塊添加的說明東東哦!
最後補充一句:對於這個說明的話,你可以通過模塊的__doc__屬性來訪問文檔哦。
好了,到此你已經會定義模塊並會為模塊添加說明文檔了,但是人非聖賢,誰能保證自己寫的「碼子」完全正確呢,這時就要凸顯測試模塊的重要性了,那該怎麼對模塊進行測試呢?不要著急哦,下面告訴大家!
測試模塊
測試模塊就是給模塊添加一些測試代碼的東東!通過測試後,你才能保證你所寫的模塊中的每個單元東東都正確哦!
前面已經說了哦,模塊呢,就是Python代碼,因此呀,我們可以使用Python命令來解釋並執行這些模塊程序哦,但是呢,條件還是有的,就是你的模塊中必須包含可執行的代碼!
比如上面的「慄子」,如果你用pythong module1.py運行,就只執行print(『俺是模塊哦』)這一句,這就尷尬了哦,因為模塊中你所定義的函數呀、類呀都木有測試到哦。
那該怎麼搞呢?你可能會用下面的方法:
到這你可能慢慢的成就感,但是呢,這有問題的,因為如果你這個模塊被其他程序導入使用時,你所編寫的這三個測試函數都會自動執行,這顯然不是你期望的效果哦,是不是到這有點「捉急」了呢?要相信Python哦,不然Python就不會這麼火爆了!
其實呢,對於模塊的測試完全可以藉助所有的模塊內置的__name__變量進行區分哦,因為假如直接使用python命令來運行一個模塊,那麼__name__變量的值就是__main__;還有假如哦,假如這個模塊中被導入到其他程序中了,那麼__name__變量的值就是模塊名哦。
好了,到此答案就出來了,就是如果你希望測試函數只有在使用python命令直接運行時才執行,那麼你就可以在測試函數中增加判斷了哦,就是說只有當__name__屬性為__main__時才調用測試函數哦。
將上面「慄子」中的測試代碼改為如下「正規軍」風格:
最後運行一下看一下效果吧,效果如下:
敬請關注「品位集結號」,為您帶來最新的小知識!