Python查看模块(变量、函数、类)方法

导入模块后,开发者往往需要知道模块包含哪些功能,如变量、函数、类别等。他们还希望查看模块中成员的帮助信息,掌握这些信息,以便正常使用模块。
可以通过以下两种方式查看模块中包含的内容:
使用 dir() 函数。
由模块本身提供 __all__ 变量。
前一章已经介绍过 dir() 函数的基本用法可用于返回模块或类别中包含的所有程序单元(包括变量、函数、类别和方法等),但可直接使用 dir() 默认情况下,函数会列出模块中的所有程序单元,包括以下画线开头的程序单元,但这些以下画线开头的程序单元不想被外界使用。
比如在 Python 执行以下命令导入交互式解释器 string 模块(Python 用于丰富字符串功能的内置模块):
>>>importstring
然后通过 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']
显然,该模块中有大量以下画线开头的程序单元。事实上,这些程序单元不想被其他程序使用,因此列出这些程序单元意义不大。 为了过滤以下画线开头的这些程序单元,我们可以使用以下列表来列出模块中的程序单元: 此命令使用 for 循环列表的推导列出 dir(string) 所有不在下面画线开头的程序单元都是模块希望被其他程序使用的程序单元。 此外,本章还介绍了模块中的模块 __all__ 该变量相当于该模块的开放功能接口,因此也可以通过该模块 __all__ 查看模块中的程序单元进行变量。例如,在交互式解释器中输入以下命令: 比较前列表推导式列出的结果和此处 __all__ 变量列出的结果不难发现两者的输出结果大致相同,这表明模块中包含的程序单元可以通过这两种方式查看。>>>[eforeindir(string)ifnote.startswith('_')]
['Formatter','Template','ascii_letters','ascii_lowercase','ascii_uppercase','capwords','digits','hexdigits',
'octdigits','printable','punctuation','whitespace']>>>string.__all__
['ascii_letters','ascii_lowercase','ascii_uppercase','capwords','digits','hexdigits','octdigits','printable',
'punctuation','whitespace','Formatter','Template']
