新聞中心
在導入模塊之后,開發(fā)者往往需要了解模塊包含哪些功能,比如包含哪些變量、哪些函數(shù)、哪些類等,還希望能查看模塊中各成員的幫助信息,掌握這些信息才能正常地使用該模塊。

創(chuàng)新互聯(lián)長期為近千家客戶提供的網(wǎng)站建設服務,團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為肥鄉(xiāng)企業(yè)提供專業(yè)的成都做網(wǎng)站、網(wǎng)站設計,肥鄉(xiāng)網(wǎng)站改版等技術(shù)服務。擁有十余年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
為了查看模塊包含什么,可以通過如下兩種方式:
使用 dir() 函數(shù)。
使用模塊本身提供的 __all__ 變量。
前面章節(jié)已經(jīng)介紹過 dir() 函數(shù)的基本用法,該函數(shù)可用于返回模塊或類所包含的全部程序單元(包括變量、函數(shù)、類和方法等),但直接使用 dir() 函數(shù)默認會列出模塊內(nèi)所有的程序單元,包括以下畫線開頭的程序單元,而這些以下畫線開頭的程序單元其實并不希望被外界使用。
比如在 Python 的交互式解釋器中執(zhí)行如下命令來導入 string 模塊(Python 內(nèi)置的用于豐富字符串功能的模塊):
>>> import string
然后通過 dir() 函數(shù)來查看該模塊的內(nèi)容,將可以看到如下輸出結(jié)果:
>>> dir(string) ['Formatter', 'Template', '_ChainMap', '_TemplateMetaclass', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_re', '_string', 'ascii_letters', 'ascii_lowercase', 'ascii_uppercase', 'capwords', 'digits', 'hexdigits', 'octdigits', 'printable', 'punctuation', 'whitespace']
很明顯,該模塊內(nèi)有大量以下畫線開頭的程序單元,其實這些程序單元并不希望被其他程序使用,因此列出這些程序單元意義不大。
為了過濾這些以下畫線開頭的程序單元,我們可以使用如下列表推導式來列出模塊中的程序單元:
>>> [e for e in dir(string) if not e.startswith('_')]
['Formatter', 'Template', 'ascii_letters', 'ascii_lowercase', 'ascii_uppercase', 'capwords', 'digits', 'hexdigits',
'octdigits', 'printable', 'punctuation', 'whitespace']
此命令使用 for 循環(huán)的列表推導式列出了 dir(string) 返回的所有不以下畫線開頭的程序單元,它們才是該模塊希望被其他程序使用的程序單元。
此外,本章前面還介紹過模塊中的 __all__ 變量,該變量相當于該模塊開放的功能接口,因此也可通過該模塊的 __all__ 變量來查看模塊內(nèi)的程序單元。例如,在交互式解釋器中輸入如下命令:
>>> string.__all__ ['ascii_letters', 'ascii_lowercase', 'ascii_uppercase', 'capwords', 'digits', 'hexdigits', 'octdigits', 'printable', 'punctuation', 'whitespace', 'Formatter', 'Template']
對比前面列表推導式列出的結(jié)果和此處 __all__ 變量列出的結(jié)果,不難發(fā)現(xiàn)二者的輸出結(jié)果大致相同,這說明使用這兩種方式都可以查看到模塊所包含的程序單元。
分享文章:創(chuàng)新互聯(lián)Python教程:Python查看模塊(變量、函數(shù)、類)方法
網(wǎng)頁網(wǎng)址:http://m.fisionsoft.com.cn/article/cohpghe.html


咨詢
建站咨詢
