知行编程网知行编程网  2022-12-01 08:30 知行编程网 隐藏边栏  5 
文章评分 0 次,平均分 0.0
导语: 本文主要介绍了关于Python查看模块(变量、函数、类)方法的相关知识,包括python的函数和方法,以及怎么查看python所有内置模块这些编程知识,希望对大家有参考作用。

Python 视图模块(变量、函数、类)方法

导入一个模块后,开发者往往需要知道该模块包含哪些函数,比如它包含哪些变量、函数、类,也希望查看模块中各个成员的帮助信息,以便模块可以使用通常只有掌握这些信息。

为了查看一个模块包含什么,有两种方法:


使用 dir() 函数。


使用模块本身提供的 __all__ 变量。

dir()函数的基本用法在上一章已经介绍过了。该函数可用于返回模块或类中包含的所有程序单元(包括变量、函数、类、方法等),但直接使用dir()函数会列出默认模块中的所有程序单元,包括以下划线开头的程序单元,而这些以下划线开头的程序单元实际上并不期望被外界使用。

例如,在 Python 的交互式解释器中执行以下命令,导入字符串模块(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__变量列出的结果,不难发现两者的输出结果大致相同,也就是说可以查看模块中包含的程序单元使用这两种方法。

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写
扫一扫二维码分享