专栏首页python学习笔记Python __doc__属性:查看文档

Python __doc__属性:查看文档

在使用 dir() 函数和 __all__ 变量的基础上,虽然我们能知晓指定模块(或包)中所有可用的成员(变量、函数和类),比如:

import string
print(string.__all__)

程序执行结果为:

['ascii_letters', 'ascii_lowercase', 'ascii_uppercase', 'capwords', 'digits', 'hexdigits', 'octdigits', 'printable', 'punctuation', 'whitespace', 'Formatter', 'Template']

但对于以上的输出结果,对于不熟悉 string 模块的用户,还是不清楚这些名称分别表示的是什么意思,更不清楚各个成员有什么功能。

针对这种情况,我们可以使用 help() 函数来获取指定成员(甚至是该模块)的帮助信息。以前面章节创建的 my_package 包为例,该包中包含 __init__.py 、module1.py 和 module2.py 这 3 个模块,它们各自包含的内容分别如下所示:

#***__init__.py 文件中的内容***
from my_package.module1 import *
from my_package.module2 import *
#***module1.py 中的内容***
#module1.py模块文件def 
display(arc):    
    '''    直接输出指定的参数    '''    
    print(arc)
#***module2.py中的内容***
#module2.py 模块文件
class CLanguage:    
    '''    CLanguage是一个类,其包含:    display() 方法    '''    
    def display(self):        
        print("http://c.biancheng.net/python/")

现在,我们先借助 dir() 函数,查看 my_package 包中有多少可供我们调用的成员:

import my_package
print([e for e in dir(my_package) if not e.startswith('_')])

程序输出结果为:

['CLanguage', 'display', 'module1', 'module2']

通过此输出结果可以得知,在 my_package 包中,有以上 4 个成员可供我们使用。接下来,我们使用 help() 函数来查看这些成员的具体含义(以 module1 为例):

import my_package
help(my_package.module1)

输出结果为:

Help on module my_package.module1 in my_package: NAME     my_package.module1 - #module1.py模块文件 FUNCTIONS     display(arc)         直接输出指定的参数 FILE     c:\users\mengma\desktop\my_package\module1.py

通过输出结果可以得知,module1 实际上是一个模块文件,其包含 display() 函数,该函数的功能是直接输出指定的 arc 参数。同时,还显示出了该模块具体的存储位置。

当然,有兴趣的读者还可以尝试运行如下几段代码:

#输出 module2 成员的具体信息help(my_package.module2)
#输出 display 成员的具体信息help(my_package.module1.display)
#输出 CLanguage 成员的具体信息help(my_package.module2.CLanguage)

值得一提的是,之所以我们可以使用 help() 函数查看具体成员的信息,是因为该成员本身就包含表示自身身份的说明文档(本质是字符串,位于该成员内部开头的位置)。前面讲过,无论是函数还是类,都可以使用 __doc__ 属性获取它们的说明文档,模块也不例外。

以 my_package 包 module1 模块中的 display() 函数为例,我们尝试用 __doc__ 变量获取其说明文档:

import my_package
print(my_package.module1.display.__doc__)

程序执行结果为:

    直接输出指定的参数

其实,help() 函数底层也是借助 __doc__ 属性实现的。

那么,如果使用 help() 函数或者 __doc__ 属性,仍然无法满足我们的需求,还可以使用以下 2 种方法:

  1. 调用 __file__ 属性,查看该模块或者包文件的具体存储位置,直接查看其源代码(后续章节或详细介绍);
  2. 对于非自定义的模块或者包,可以查阅 Python 库的参考文档 https://docs.python.org/3/library/index.html

原文链接:http://c.biancheng.net/view/2405.html

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python __file__属性:查看模块的源文件路径

    前面章节提到,当指定模块(或包)没有说明文档时,仅通过 help() 函数或者 __doc__ 属性,无法有效帮助我们理解该模块(包)的具体功能。在这种情况下,...

    风之随想
  • Python创建包,导入包

    《Python包》一节中已经提到,包其实就是文件夹,更确切的说,是一个包含“__init__.py”文件的文件夹。因此,如果我们想手动创建一个包,只需进行以下 ...

    风之随想
  • python __str__()函数的作用

    不知道大家再写程序是,打印一个实例化对象时,打印的其实时一个对象的地址。而通过__str__()函数就可以帮助我们打印对象中具体的属性值,或者你想得到的东西。

    风之随想
  • Cisco_H3C命令对照

    Cisco_H3C命令对照思科Cisco        华为3COM        功能 enable        system-view        进入...

    py3study
  • Flutter实现一个酷炫带动画的列表型多选日历组件

    由于项目需要,用Flutter重构了之前用Android做过的日历组件,整体效果感觉不错,流畅度甚至超过原来的,这里需要提一下官网的做法,如下:

    kimihe
  • 数据导入hive表和hive表中数据导出的方式

    用户4870038
  • android studio 更新 Gradle错误解决方法

    Android Studio每次更新版本都会更新Gradle这个插件,但由于长城的问题每次更新都是失败,又是停止在Refreshing Gradle Proje...

    阿新
  • Tesseract最新版语言包chi_sim.traineddata(4.0.0)GitHub官方获取免csdn积分,各个版本语言包全有

    不用再苦苦找资源,不用花任何 csdn 积分,官方已经给你提供好了,各个版本全有! 只是大家没有经验,找不到位置罢了。 获取地址:Tesseract官方G...

    小蓝枣
  • Hive表数据的加载与导出

    insert into table score3 partition(month =‘201807’) values (‘001’,‘002’,‘100’);

    大数据梦想家
  • Android最简单的状态切换布局实现教程

    项目中经常遇到这样一种情况,新打开的界面需要加载数据,存在多种状态的结果,需要根据不同结果展示界面,这个过程归纳起来可以分为五种状态:初始状态、请求状态、空数据...

    砸漏

扫码关注云+社区

领取腾讯云代金券