探索模块¶
探索模块是一种很有用的技能, 因为在Python中有很多模块, 我们不能去指望把每一个模块都记得清清楚楚, 我们需要的是一种方法, 去理解模块.
模块中包含什么¶
在导入一个模块或包之后, 怎么知道模块中具体包含哪些成员(变量, 函数或者类)呢?
最直接的方式是使用Python解释器进行研究, 在导入模块之后, 使用dir()函数或者__all__变量.
dir()函数
内置的函数dir(), 它列出对象的所有属性(对于模块, 它列出所有的变量, 函数和类), 以字符串列表的形式返回.
__all__变量
该变量包含一个列表, 该变量是在模块中设置的, 旨在定义模块的公有接口, 具体地说, 它告诉解释器从模块中导入所有的名称意味着什么.
注意
但并非所有的模块都支持用__all__变量, 因此对于获取有些模块的成员, 就只能使用dir()函数.
文档¶
help()函数
可以使用内置函数help()查询一个模块, 或模块中变量, 函数和类的帮助信息, 这些帮助信息其实是来自于文档字符串.
__doc__属性
无论是函数, 类还是模块(包)都可以使用__doc__属性获取它们的说明文档, help()函数底层也是通过__doc__属性实现的.
然而, 并非每个函数, 类或模块都有详尽的文档字符串(虽然应该如此), 且有时需要有关工作原理的更详尽的描述. 从网下载的大多说模块都有配套文档. 就学习Python编程而言, 最有用的文档就是Python库参考文档(可在线浏览或下载), 它描述了标准库中的所有模块.
使用源代码¶
有时, 指定模块(包)没有说明文档, 通过help()函数或者__doc__属性, 无法有效获取模块(包)的具体功能.
在这种情况下, 可以通过__file__属性查找该模块(包)文件所在的具体位置, 直接查看其源代码.
注意
注意, 并不是所有模块都提供__file__属性, 因为并不是所有模块的实现都采用Python语言, 有些模块采用的是其它编程语言(如C语言).