[python学习日记]python内置help函数详解

当我们在调用一些模块时,我们忘记一些函数的参数或返回值等其他细节时,我们可以使用python内置的help函数


help函数的使用示例

当忘记requests模块get函数的用法时,我们可以利用以下代码查看帮助信息

# help(函数名/模块名)

help(requests.get)

应得到有关requests.get()的帮助信息。

Help on function get in module requests.api:

get(url, params=None, **kwargs)
    Sends a GET request.

    :param url: URL for the new :class:`Request` object.
    :param params: (optional) Dictionary, list of tuples or bytes to send
        in the body of the :class:`Request`.
    :param \*\*kwargs: Optional arguments that ``request`` takes.
    :return: :class:`Response ` object
    :rtype: requests.Response

help函数工作原理

那么help函数输出的帮助信息是从哪里来的呢?自定义的模块是否可以利用help函数获取帮助信息呢?

1. help函数输出了什么
上面我们利用help函数获取了requests.get函数的帮助信息。下面我们来看一下requests.get函数的源码

def get(url, params=None, **kwargs):
    r"""Sends a GET request.

    :param url: URL for the new :class:`Request` object.
    :param params: (optional) Dictionary, list of tuples or bytes to send
        in the body of the :class:`Request`.
    :param \*\*kwargs: Optional arguments that ``request`` takes.
    :return: :class:`Response ` object
    :rtype: requests.Response
    """

    kwargs.setdefault('allow_redirects', True)
    return request('get', url, params=params, **kwargs)

不难发现help函数输出的内容即为requests.get函数的首部及其注释的内容。

2. 利用help函数输出自定义函数的帮助信息

import requests


def about_help(age: int) -> str:
    #单行注释1
    #单行注释2
    '''被三对引号包围的多行注释'''
    '''被三对引号包围的多行注释'''

    return 'result'


help(about_help)

输出内容

Help on function about_help in module __main__:

about_help(age: int) -> str
    被三对引号包围的多行注释

可以看出help函数输出的内容为该函数的函数首部与函数内部的第一个多行注释。

3. 当help函数以模块名作为参数时

help(requests)则会输出requests模块对应包中的__init__.py中的第一个多行注释。

总结

函数中或模块中的第一个多行注释即为该函数或该模块的docstring, docstring会变成该对象的__doc__属性,可通过如requests.__doc__调用该属性。

A docstring is a string literal that occurs as the first statement in

a module, function, class, or method definition. Such a docstring

becomes the docspecial attribute of that object.

在python中比较推崇在代码中写“文档”,代码即文档更直观,更方便。

你可能感兴趣的:(python学习日记)