Python靜態(tài)類型檢查新工具之pyright 使用指南
Python是一門動(dòng)態(tài)類型的語(yǔ)言,民間流傳一種說(shuō)法叫”動(dòng)態(tài)一時(shí)爽,重構(gòu)火葬場(chǎng)”,聽起來(lái)夠嚇人的,好在這門語(yǔ)言在不斷地改進(jìn),包括對(duì) PEP484 引入的類型提示(Type Hint),就是在某種程度上,讓Python能夠像靜態(tài)語(yǔ)言一樣支持類型聲明,例如:
def greeting(name: str) -> str: return 'Hello ' + name
這就意味著,如果有人調(diào)用 greeting函數(shù)的時(shí)候,傳入的參數(shù)不是字符串,你用靜態(tài)類型檢查工具一下就能查出來(lái)哪些地方?jīng)]有傳入正確類型的值。而 pyright 就是為此而生。
pyright 核心特性:
- TypeScript 編寫,速度快
- 不依賴Python環(huán)境
- 可配置性強(qiáng)
我們可以直接在 vscode 搜索安裝插件 pyright

命令行工具可以使用 npm 安裝
sudo npm i -g pyright
如何使用pyright
假設(shè)有個(gè)python文件 hello.py,里面代碼是:
def greeting2(age:int) -> str:
print("hello")
greeting2("nihao")
greeting2(1)
注意我給greeting2中的參數(shù)類型聲明是int,返回的返回值是字符串類型,但是在函數(shù)中并沒(méi)有看到return 返回值。直接運(yùn)行該文件不會(huì)有任何錯(cuò)誤
python hello.py hello hello
在VSCode中會(huì)直接有錯(cuò)誤提示信息:

如果我們用 pyright 檢查代碼,輸出信息:
pyright hello.py
Finding source files
Found 1 source files
Analyzed 1 file in 1.546sec
/Users/xxxx/Workspace/My/draft/hello.py
Function with declared type of str must return value (1, 28)
Argument of type 'str' cannot be assigned to parameter of type 'int' (4, 11)
2 errors, 0 warnings
Find Source Files: 0.001sec
Read Source Files: 0.012sec
Tokenize: 0.085sec
Parse: 0.17sec
Post-parse Walker: 0.147sec
Semantic Analyzer: 0.293sec
Type Analyzer: 0.766sec
提示有兩處問(wèn)題:
- Function with declared type of str must return value (1, 28),函數(shù)聲明返回str類型的值,但是卻沒(méi)有返回
- Argument of type 'str' cannot be assigned to parameter of type 'int' (4, 11), 字符串值不能復(fù)制給int類型參數(shù)
剩下的事情就是按照錯(cuò)誤提示修正, 正如 PEP484 所說(shuō)的那樣,Type Hint is not role , is tool。 它并不是規(guī)則,只是一個(gè)工具,幫助我們規(guī)避某些錯(cuò)誤。即使你傳錯(cuò)了參數(shù),程序編譯時(shí)并不會(huì)報(bào)錯(cuò),只有執(zhí)行到具體的業(yè)務(wù)代碼的時(shí)候才會(huì)出錯(cuò)。
GitHub地址:https://github.com/Microsoft/pyright
總結(jié)
以上所述是小編給大家介紹的Python靜態(tài)類型檢查新工具之pyright 使用指南,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!
相關(guān)文章
深入了解Python枚舉類型的相關(guān)知識(shí)
這篇文章主要介紹了深入了解Python枚舉類型的相關(guān)知識(shí),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07
Pycharm中import torch報(bào)錯(cuò)的快速解決方法
這篇文章主要介紹了Pycharm中import torch報(bào)錯(cuò)的快速解決方法,很多朋友容易碰到這個(gè)問(wèn)題,今天小編特此把解決方案分享到腳本之家平臺(tái)供大家參考,需要的朋友可以參考下2020-03-03
Python實(shí)現(xiàn)連接postgresql數(shù)據(jù)庫(kù)的方法分析
這篇文章主要介紹了Python實(shí)現(xiàn)連接postgresql數(shù)據(jù)庫(kù)的方法,結(jié)合實(shí)例形式分析了Python基于psycopg2和python3-postgresql鏈接postgresql數(shù)據(jù)庫(kù)的相關(guān)操作技巧,需要的朋友可以參考下2017-12-12
針對(duì)Pandas的總結(jié)以及數(shù)據(jù)讀取_pd.read_csv()的使用詳解
這篇文章主要針對(duì)Pandas總結(jié)以及數(shù)據(jù)讀取_pd.read_csv()的使用詳解做出了實(shí)例,講解非常全面,值得收藏,需要的朋友可以參考下2023-03-03
Python中rapidjson參數(shù)校驗(yàn)實(shí)現(xiàn)
通常需要對(duì)前端傳遞過(guò)來(lái)的參數(shù)進(jìn)行校驗(yàn),校驗(yàn)的方式有多種,本文主要介紹了Python中rapidjson參數(shù)校驗(yàn)實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-07-07
簡(jiǎn)介Python中用于處理字符串的center()方法
這篇文章主要介紹了簡(jiǎn)介Python中用于處理字符串的center()方法,是Python入門中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-05-05

