您好,登錄后才能下訂單哦!
Python怎么查看模塊(變量、函數、類)?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
在導入模塊之后,開發者往往需要了解模塊包含哪些功能,比如包含哪些變量、哪些函數、哪些類等,還希望能查看模塊中各成員的幫助信息,掌握這些信息才能正常地使用該模塊。
為了查看模塊包含什么,可以通過如下兩種方式:
使用 dir() 函數。
使用模塊本身提供的 __all__ 變量。
前面章節已經介紹過 dir() 函數的基本用法,該函數可用于返回模塊或類所包含的全部程序單元(包括變量、函數、類和方法等),但直接使用 dir() 函數默認會列出模塊內所有的程序單元,包括以下畫線開頭的程序單元,而這些以下畫線開頭的程序單元其實并不希望被外界使用。
比如在 Python 的交互式解釋器中執行如下命令來導入 string 模塊(Python 內置的用于豐富字符串功能的模塊):
>>> import string
然后通過 dir() 函數來查看該模塊的內容,將可以看到如下輸出結果:
>>> 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']
很明顯,該模塊內有大量以下畫線開頭的程序單元,其實這些程序單元并不希望被其他程序使用,因此列出這些程序單元意義不大。
為了過濾這些以下畫線開頭的程序單元,我們可以使用如下列表推導式來列出模塊中的程序單元:
>>> [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 循環的列表推導式列出了 dir(string) 返回的所有不以下畫線開頭的程序單元,它們才是該模塊希望被其他程序使用的程序單元。
此外,本章前面還介紹過模塊中的 __all__ 變量,該變量相當于該模塊開放的功能接口,因此也可通過該模塊的 __all__ 變量來查看模塊內的程序單元。例如,在交互式解釋器中輸入如下命令:
>>> string.__all__ ['ascii_letters', 'ascii_lowercase', 'ascii_uppercase', 'capwords', 'digits', 'hexdigits', 'octdigits', 'printable', 'punctuation', 'whitespace', 'Formatter', 'Template']
對比前面列表推導式列出的結果和此處 __all__ 變量列出的結果,不難發現二者的輸出結果大致相同,這說明使用這兩種方式都可以查看到模塊所包含的程序單元。
看完上述內容,你們掌握Python怎么查看模塊(變量、函數、類)的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。