vscode 是如何智能提示 kwargs 中的参数的?
当我使用 requests 包的 post 时候:
import requestsrequests.post(url='',json={})
可以看到 vscode 把 post 的所有参数都智能提示了,包括参数名、type、默认值
但是当我 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 后面的『所有参数都智能提示了,包括参数名、type、默认值』是什么?怎么来的?
回答:
stub file
有一种方式,专门用于为没有类型信息,或者没有完整类型信息的包提供类型信息标注,并且只提供类型信息标注。这种标注可以原包放在一起,也可以不放在一起,单独安装。pylance 还为一些常用包自己写了一些类型标注。你看的提示就来自这里。这里写的就已经不是 **kwargs
,而是每一个具体参数 / 类型 / 默认值了。
你可用 vscode 里的 "Go to type definition" 看到这些定义文件。
以上是 vscode 是如何智能提示 kwargs 中的参数的? 的全部内容, 来源链接: utcz.com/p/938549.html