【问题标题】:Where does help() find the info in Python?help() 在哪里找到 Python 中的信息?
【发布时间】:2015-04-26 05:46:16
【问题描述】:

我最近发现了内置的help(),它打印了模块、函数、方法、类等的一些信息。但是它究竟在哪里找到它显示的信息? Python docs 对此不要给出任何提示。

>>> import base64
>>> help(base64)
Help on module base64:

NAME
    base64 - RFC 3548: Base16, Base32, Base64 Data Encodings

FILE
    /usr/lib/python2.7/base64.py
..

【问题讨论】:

标签: python python-2.7 helper built-in


【解决方案1】:

如果你创建以下结构

C(目录) --> __init__.py(该目录下的文件)

然后将以下内容写入__init__.py

'''Some help'''

然后运行help(C)。您将看到以下内容

Help on package C:

NAME
   C - Some help

FILE
   /C/__init__.py

PACKAGE CONTENTS

在这种情况下,help() 会从文档字符串(三个 ' 之间的那个)中获得帮助

【讨论】:

  • 你可以使用`\`来转义__斜体文本问题-> __init__.py
  • 我经常发现自己用反引号写__init__.py,这也解决了这个问题。
【解决方案2】:

它在site.py,如果你使用help.__class__,你会看到它是site._Helper,它只是pydoc.help的包装:

In [1]: help.__class__
Out[1]: site._Helper

_Helper 来自 site.py 的类:

class _Helper(object):
    """Define the builtin 'help'.
    This is a wrapper around pydoc.help (with a twist).

    """

    def __repr__(self):
        return "Type help() for interactive help, " \
               "or help(object) for help about object."
    def __call__(self, *args, **kwds):
        import pydoc
        return pydoc.help(*args, **kwds)

def sethelper():
    __builtin__.help = _Helper() 

help(object) 等价于__builtin__.help(object),它将对象传递给pydoc.help

【讨论】:

    【解决方案3】:

    如果你这样做,help(help),你会得到

    Help on _Helper in module site object:
    
    class _Helper(__builtin__.object)
     |  Define the builtin 'help'.
     |  This is a wrapper around pydoc.help (with a twist).
     |  
     |  Methods defined here:
     |  
     |  __call__(self, *args, **kwds)
     |  
     |  __repr__(self)
     |  
     |  ----------------------------------------------------------------------
     |  Data descriptors defined here:
     |  
     |  __dict__
     |      dictionary for instance variables (if defined)
     |  
     |  __weakref__
     |      list of weak references to the object (if defined)
    

    基本上,help 的输入来自pydoc.help。引用,pydoc documentation

    对于模块、类、函数和方法,显示的文档源自对象的文档字符串(即__doc__ 属性),并递归地源自其可文档化的成员。如果没有文档字符串,pydoc 会尝试从源文件中类、函数或方法定义上方或模块顶部的注释行块中获取描述(参见@ 987654329@)。

    内置函数help() 调用交互式解释器中的在线帮助系统,该解释器使用pydoc 将其文档生成为控制台上的文本。


    但是它究竟在哪里找到它所显示的信息呢?

    上面引用的粗体字回答了这个问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-12
      • 1970-01-01
      • 1970-01-01
      • 2023-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多