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

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

如果我們用 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
提示有兩處問題:
- Function with declared type of str must return value (1, 28),函數(shù)聲明返回str類型的值,但是卻沒有返回
- Argument of type 'str' cannot be assigned to parameter of type 'int' (4, 11), 字符串值不能復制給int類型參數(shù)
剩下的事情就是按照錯誤提示修正, 正如 PEP484 所說的那樣,Type Hint is not role , is tool。 它并不是規(guī)則,只是一個工具,幫助我們規(guī)避某些錯誤。即使你傳錯了參數(shù),程序編譯時并不會報錯,只有執(zhí)行到具體的業(yè)務代碼的時候才會出錯。
GitHub地址:https://github.com/Microsoft/pyright
總結
以上所述是小編給大家介紹的Python靜態(tài)類型檢查新工具之pyright 使用指南,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!
相關文章
Python實現(xiàn)連接postgresql數(shù)據(jù)庫的方法分析
這篇文章主要介紹了Python實現(xiàn)連接postgresql數(shù)據(jù)庫的方法,結合實例形式分析了Python基于psycopg2和python3-postgresql鏈接postgresql數(shù)據(jù)庫的相關操作技巧,需要的朋友可以參考下2017-12-12
針對Pandas的總結以及數(shù)據(jù)讀取_pd.read_csv()的使用詳解
這篇文章主要針對Pandas總結以及數(shù)據(jù)讀取_pd.read_csv()的使用詳解做出了實例,講解非常全面,值得收藏,需要的朋友可以參考下2023-03-03
Python中rapidjson參數(shù)校驗實現(xiàn)
通常需要對前端傳遞過來的參數(shù)進行校驗,校驗的方式有多種,本文主要介紹了Python中rapidjson參數(shù)校驗實現(xiàn),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-07-07

