簡體   English   中英

Python 的 VS Code 函數簽名 IntelliSense 來自哪里?

[英]Where does VS Code function signature IntelliSense come from for Python?

如果我導入requests Python 庫(例如)並將鼠標懸停在requests.get上,我會看到:

在此處輸入圖像描述

看看函數簽名參數和類型是如何詳細描述的? 現在,如果我Ctrl +單擊get方法,我將轉到導出函數的本地<python-dir>/site-packages/requests/api.py文件。 如果我將鼠標懸停在get函數上,我會看到以下描述性較差的函數簽名:

在此處輸入圖像描述

我在那里也看不到任何類型注釋,所以問題是,當我在自己的腳本中將鼠標懸停在函數簽名上時,函數簽名的所有其他類型信息來自哪里,以及如何為自己添加類似信息代碼?

這在類型存根文件中有清楚的解釋。

為什么 Pyright 不嘗試(默認情況下)從導入的 python 源中確定類型? 有幾個原因。

  1. 導入的庫可能非常大,因此分析它們可能需要大量時間和計算。
  2. 一些庫是原生 (C++) 庫之上的薄墊片。 在這些情況下,很少或沒有類型信息是可推斷的。
  3. 一些庫會覆蓋 Python 的默認加載器邏輯。 在這些情況下,無法進行靜態分析。
  4. 從源文件推斷的類型信息通常價值很低,因為許多類型無法正確推斷。 即使可以推斷出具體類型,泛型類型定義也不能。
  5. 類型分析將公開導入模塊中的所有符號,即使是那些不打算由作者公開的符號。 與許多其他語言不同,Python 無法區分要導出的符號和不應該導出的符號。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM