python

当前位置:中华考试网 >> python >> python编程基础 >> 文章内容

Python__doc__属性:查看文档

来源:中华考试网  [2020年10月28日]  【

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

  import stringprint(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_packageprint([e for e in dir(my_package) if not e.startswith('_')])

  程序输出结果为:

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

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

  import my_packagehelp(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_packageprint(my_package.module1.display.__doc__)

  程序执行结果为:

  直接输出指定的参数

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

责编:fushihao
  • 会计考试
  • 建筑工程
  • 职业资格
  • 医药考试
  • 外语考试
  • 学历考试