探索模块

探索模块是一种很有用的技能, 因为在Python中有很多模块, 我们不能去指望把每一个模块都记得清清楚楚, 我们需要的是一种方法, 去理解模块.

模块中包含什么

在导入一个模块或包之后, 怎么知道模块中具体包含哪些成员(变量, 函数或者类)呢? 最直接的方式是使用Python解释器进行研究, 在导入模块之后, 使用dir()函数或者__all__变量.

  • dir()函数

内置的函数dir(), 它列出对象的所有属性(对于模块, 它列出所有的变量, 函数和类), 以字符串列表的形式返回.

  • __all__变量

该变量包含一个列表, 该变量是在模块中设置的, 旨在定义模块的公有接口, 具体地说, 它告诉解释器从模块中导入所有的名称意味着什么.

注意

但并非所有的模块都支持用__all__变量, 因此对于获取有些模块的成员, 就只能使用dir()函数.

文档

  • help()函数

可以使用内置函数help()查询一个模块, 或模块中变量, 函数和类的帮助信息, 这些帮助信息其实是来自于文档字符串.

  • __doc__属性

无论是函数, 类还是模块(包)都可以使用__doc__属性获取它们的说明文档, help()函数底层也是通过__doc__属性实现的.

然而, 并非每个函数, 类或模块都有详尽的文档字符串(虽然应该如此), 且有时需要有关工作原理的更详尽的描述. 从网下载的大多说模块都有配套文档. 就学习Python编程而言, 最有用的文档就是Python库参考文档(可在线浏览或下载), 它描述了标准库中的所有模块.

使用源代码

有时, 指定模块(包)没有说明文档, 通过help()函数或者__doc__属性, 无法有效获取模块(包)的具体功能. 在这种情况下, 可以通过__file__属性查找该模块(包)文件所在的具体位置, 直接查看其源代码.

注意

注意, 并不是所有模块都提供__file__属性, 因为并不是所有模块的实现都采用Python语言, 有些模块采用的是其它编程语言(如C语言).