微軟推出Pylance,隨著VS Code更新,性能又進(jìn)一步
微軟推出的 VS Code Python 語言插件 Pylance,給 Python 帶來編譯語言般的開發(fā)支持。對于最近更新的 VS Code 版本,除了保留 Pylance 原始特性外,又引入了新特性。

Pylance 是微軟今年推出的 Python 語言服務(wù)器,可以利用語言服務(wù)器協(xié)議與 VS Code 進(jìn)行通信。Pylance 在 VS Code 中為 Python 提供了快速、特性豐富的語言支持,并依賴于核心的 Python 擴(kuò)展,從而極大地改善了 VS Code 中的 Python 體驗。
隨著本月 VS Code 的更新,Pylance 可以執(zhí)行用戶期待已久的操作,將 Python 開發(fā)體驗帶到一個新的水平。在本文中,機(jī)器學(xué)習(xí)工程師 Dimitris Poulopoulos 將為讀者介紹 Pylance 的功能以及在新版 VS Code 中的可用最新特性。
Python stub 文件
Pylance 利用類型 stub 文件(.pyi 文件)和惰性類型推斷為使用者提供了高效的開發(fā)體驗。
什么是 stub 文件呢?
Stub 文件為 Python 模塊提供類型提示信息。完整的官方信息可以在 PEP-484 中的 Stub-files 章節(jié)中找到。例如,下面的 Python 函數(shù)存在于 my_function.py 模塊:
- def add(a, b):
- return a + b
我們也可以創(chuàng)建一個新的 stub 文件 my_function.pyi,以提供類型提示:
- def add(a: int, b: int) -> int: ...
注意:在 stub 文件中,定義函數(shù)末尾的「...」是語法的一部分。
然而,我們可以在 Python 模塊中插入類型提示,而不需要創(chuàng)建新的 stub 文件,如下代碼所示
- def add(a: int, b: int) -> int:
- return a + b
問題來了:我們?yōu)槭裁匆褂?stub 文件呢?這里有幾個原因:例如保持. py 文件向后兼容;向現(xiàn)有代碼庫中提供類型提示,并希望盡量減少源代碼本身的更改等等。
講完 stub 文件優(yōu)點,我們再回到 Pylance 本身。stub 文件通過豐富的類型信息增強(qiáng)了 Python IntelliSense 體驗,幫助開發(fā)者更快地編寫代碼。更重要的是,Pylance 已經(jīng)為流行模塊提供了一個 stub 集合,其內(nèi)置的 stub 庫提供精確的類型檢查以及快速自動補(bǔ)全功能。
Pylance 特性展示
和其他 Python 語言服務(wù)器一樣,Pylance 也是圍繞提升開發(fā)效率和體驗進(jìn)行優(yōu)化。Pylance 特性有很多,下面介紹幾個比較重要的特性:
類型信息顯示:當(dāng)你把鼠標(biāo)懸浮在對應(yīng)的函數(shù)上方時,就可以顯示對應(yīng)的函數(shù)文檔。

自動導(dǎo)入功能:在使用 Pycharm 的時候,當(dāng)用到某個包或者模塊時,可以通過快捷鍵 Alt+Enter 快速導(dǎo)入對應(yīng)的模塊。通過 Pylance 也可以實現(xiàn)相同的功能,現(xiàn)在我們可以自動導(dǎo)入已經(jīng)安裝好的標(biāo)準(zhǔn)庫模塊。

類型檢查:類型檢查可以幫助我們驗證參數(shù)在傳入函數(shù)執(zhí)行前類型是否正確。Pylance 中類型檢查默認(rèn)是關(guān)閉的,需要在設(shè)置中啟動,操作方法為:設(shè)置「python.analysis.typeCheckingMode」為「basic」或者是「strict」。

VS Code 更新引入了 Pylance 新特性
最近,VS Code 更新引入了幾個新的 Pylance 特性,其中代碼提取和 Pylance Insiders 程序非常重要。
代碼提取:我們可以通過單擊來提取代碼中的方法和變量。

Pylance Insiders:Pylance Insiders 程序,它提供了對新語言服務(wù)器特性和改進(jìn)的早期訪問。要啟用 insiders,請設(shè)置「pylance.insidersChannel」:「daily」。