Python自定义模块
Python自定義模塊
到目前為止,讀者已經(jīng)掌握了導(dǎo)入 Python 標(biāo)準(zhǔn)庫并使用其成員(主要是函數(shù))的方法,接下來要解決的問題是,怎樣自定義一個模塊呢?
前面章節(jié)中講過,Python 模塊就是 Python 程序,換句話說,只要是 Python 程序,都可以作為模塊導(dǎo)入。例如,下面定義了一個簡單的模塊(編寫在 demo.py 文件中):
name = "張三" add = "zhangsan" print(name,add) def say():print("人生苦短,我學(xué)Python!") class CLanguage:def __init__(self,name,add):self.name = nameself.add = adddef say(self):print(self.name,self.add)可以看到,我們在 demo.py 文件中放置了變量(name 和 add)、函數(shù)( say() )以及一個 Clanguage 類,該文件就可以作為一個模板。
但通常情況下,為了檢驗?zāi)0逯写a的正確性,我們往往需要為其設(shè)計一段測試代碼,例如:
say() clangs = CLanguage("李四","lisi") clangs.say()運行 demo.py 文件,其執(zhí)行結(jié)果為:
張三 zhangsan 人生苦短,我學(xué)Python! 李四 lisi通過觀察模板中程序的執(zhí)行結(jié)果可以斷定,模板文件中包含的函數(shù)以及類,是可以正常工作的。
在此基礎(chǔ)上,我們可以新建一個 test.py 文件,并在該文件中使用 demo.py 模板文件,即使用 import 語句導(dǎo)入 demo.py:
import demo注意,雖然 demo 模板文件的全稱為 demo.py,但在使用 import 語句導(dǎo)入時,只需要使用該模板文件的名稱即可。
此時,如果直接運行 test.py 文件,其執(zhí)行結(jié)果為:
張三 zhangsan 人生苦短,我學(xué)Python! 李四 lisi可以看到,當(dāng)執(zhí)行 test.py 文件時,它同樣會執(zhí)行 demo.py 中用來測試的程序,這顯然不是我們想要的效果。正常的效果應(yīng)該是,只有直接運行模板文件時,測試代碼才會被執(zhí)行;反之,如果是其它程序以引入的方式執(zhí)行模板文件,則測試代碼不應(yīng)該被執(zhí)行。
要實現(xiàn)這個效果,可以借助 Python 內(nèi)置的 name 變量。當(dāng)直接運行一個模塊時,name 變量的值為 main;而將模塊被導(dǎo)入其他程序中并運行該程序時,處于模塊中的 name 變量的值就變成了模塊名。因此,如果希望測試函數(shù)只有在直接運行模塊文件時才執(zhí)行,則可在調(diào)用測試函數(shù)時增加判斷,即只有當(dāng) name ==‘main’ 時才調(diào)用測試函數(shù)。
因此,我們可以修改 demo.py 模板文件中的測試代碼為:
if __name__ == '__main__':say()clangs = CLanguage("李四","lisi")clangs.say()這樣,當(dāng)我們直接運行 demo.py 模板文件時,其執(zhí)行結(jié)果不變;而運行 test.py 文件時,其執(zhí)行結(jié)果為:
李四 lisi顯然,這里執(zhí)行的僅是模板文件中的輸出語句,測試代碼并未執(zhí)行。
自定義模塊編寫說明文檔
我們知道,在定義函數(shù)或者類時,可以為其添加說明文檔,以方便用戶清楚的知道該函數(shù)或者類的功能。自定義模塊也不例外。
為自定義模塊添加說明文檔,和函數(shù)或類的添加方法相同,即只需在模塊開頭的位置定義一個字符串即可。例如,為 demo.py 模板文件添加一個說明文檔:
''' demo 模塊中包含以下內(nèi)容: name 字符串變量:初始值為“張三” add 字符串變量:初始值為“zhangsan” say() 函數(shù) CLanguage類:包含 name 和 add 屬性和 say() 方法。 '''在此基礎(chǔ)上,我們可以通過模板的 doc 屬性,來訪問模板的說明文檔。例如,在 test.py 文件中添加如下代碼:
import demo print(demo.__doc__)程序運行結(jié)果為:
張三 zhangsandemo 模塊中包含以下內(nèi)容:
name 字符串變量:初始值為“張三” add 字符串變量:初始值為“zhangsan” say() 函數(shù) CLanguage類:包含 name 和 add 屬性和 say() 方法。總結(jié)
以上是生活随笔為你收集整理的Python自定义模块的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: kettle使用教程(超详细)
- 下一篇: python网络爬虫从入门到精通吕云翔_