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

当我使用 requests 包的 post 时候:

import requests

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

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

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

但是当我 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

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

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


回答:

stub file

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

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

以上是 vscode 是如何智能提示 kwargs 中的参数的? 的全部内容, 来源链接: utcz.com/p/938549.html

回到顶部