vscode 是如何智能提示 kwargs 中的参数的?

当我使用 requests 包的 post 时候:

import requests

requests.post(url='',json={})

可以看到 vscode 把 post 的所有参数都智能提示了,包括参数名、type、默认值

图片.png

但是当我 crtl+鼠标左键进入 post 源代码的时候,发现:

def post(url, data=None, json=None, **kwargs):
    r"""Sends a POST request.

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

    return request("post", url, data=data, json=json, **kwargs)

都是一堆的 kwargs

图片.png

vscode 是怎么知道 kwargs 后面的『所有参数都智能提示了,包括参数名、type、默认值』是什么?怎么来的?

阅读 2.6k
1 个回答

stub file

有一种方式,专门用于为没有类型信息,或者没有完整类型信息的包提供类型信息标注,并且只提供类型信息标注。这种标注可以原包放在一起,也可以不放在一起,单独安装。pylance 还为一些常用包自己写了一些类型标注。你看的提示就来自这里。这里写的就已经不是 **kwargs,而是每一个具体参数 / 类型 / 默认值了。

你可用 vscode 里的 "Go to type definition" 看到这些定义文件。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题