当前位置: 首页 > news >正文

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模块文件
defdisplay(arc):'''直接输出指定的参数'''
print(arc)#***module2.py中的内容***
#module2.py 模块文件
class CLanguage:'''CLanguage是一个类,其包含:display() 方法'''
defdisplay(self):
print("http://csdn.net/python/")

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

import my_package
print([e for e indir(my_package)ifnot 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__ 变量获取其说明文档:程序执行结果为:

直接输出指定的参数

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

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

  1. 调用 __file__ 属性,查看该模块或者包文件的具体存储位置,直接查看其源代码(后续章节或详细介绍);

  1. 对于非自定义的模块或者包,可以查阅 Python 库的参考文档 https://docs.python.org/3/library/index.html。

http://www.lryc.cn/news/4126.html

相关文章:

  • 电子科技大学操作系统期末复习笔记(一):操作系统概述
  • [实践篇]13.20 Qnx进程管理slm学习笔记(三)
  • 冰冰学习笔记:多线程
  • 补充一些前端面试题
  • 七大设计原则之单一职责原则应用
  • [USACO23JAN] Leaders B
  • C++模板初阶
  • 文献阅读:Scaling Instruction-Finetuned Language Models
  • gpt草稿
  • mysal第三次作业
  • 分页和mmap
  • C++之异常处理
  • 牛客寒假集训营6 E 阿宁的生成树
  • 嵌入式C基础知识(10)
  • TC3xx FlexRay™ 协议控制器 (E-Ray)-01
  • 优劣解距离法TOPSIS——清风老师
  • 【Unity3D】Shader常量、变量、结构体、函数
  • LeetCode 刷题系列 -- 496. 下一个更大元素 I
  • Docker 搭建本地私有仓库
  • XML中的CDATA且mybatis中特殊字符转义
  • 位运算 | 1356. 根据数字二进制下 1 的数目排序
  • React Hooks之useState详解
  • 选购交换机的参数依据和主要的参数指标详解
  • Connext DDS属性配置参考大全(1)
  • Docker安全
  • 刷题记录:牛客NC20279[SCOI2010]序列操作
  • Fluent Python 笔记 第 6 章 使用一等函数实现设计模式
  • windbg-应用层实时调试
  • 【Python语言基础】——Python NumPy 数组索引
  • MWORKS--MoHub介绍