前面章节提到,当指定模块(或包)没有说明文档时,仅通过 help() 函数或者 __doc__ 属性,无法有效帮助我们理解该模块(包)的具体功能。在这种情况下,我们可以通过 __file__ 属性查找该模块(或包)文件所在的具体存储位置,直接查看其源代码。
仍以前面章节创建的 my_package 包为例,下面代码尝试使用 __file__ 属性获取该包的存储路径:
import my_package
print(my_package.__file__)
程序输出结果为:
注意,因为当引入 my_package 包时,其实际上执行的是 __init__.py 文件,因此这里查看 my_package 包的存储路径,输出的 __init__.py 文件的存储路径。
再以 string 模块为例:
import string
print(string.__file__)
程序输出结果为:
由此,通过调用 __file__ 属性输出的绝对路径,我们可以很轻易地找到该模块(或包)的源文件。
注意,并不是所有模块都提供 __file__ 属性,因为并不是所有模块的实现都采用 Python 语言,有些模块采用的是其它编程语言(如 C 语言)。