Python靜態(tài)類型檢查新工具之pyright 使用指南
Python是一門動態(tài)類型的語言,民間流傳一種說法叫”動態(tài)一時爽,重構(gòu)火葬場”,聽起來夠嚇人的,好在這門語言在不斷地改進,包括對 PEP484 引入的類型提示(Type Hint),就是在某種程度上,讓Python能夠像靜態(tài)語言一樣支持類型聲明,例如:
def greeting(name: str) -> str: return 'Hello ' + name
這就意味著,如果有人調(diào)用 greeting函數(shù)的時候,傳入的參數(shù)不是字符串,你用靜態(tài)類型檢查工具一下就能查出來哪些地方?jīng)]有傳入正確類型的值。而 pyright 就是為此而生。
pyright 核心特性:
- TypeScript 編寫,速度快
- 不依賴Python環(huán)境
- 可配置性強
我們可以直接在 vscode 搜索安裝插件 pyright
命令行工具可以使用 npm 安裝
sudo npm i -g pyright
如何使用pyright
假設(shè)有個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
總結(jié)
以上所述是小編給大家介紹的Python靜態(tài)類型檢查新工具之pyright 使用指南,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!
相關(guān)文章
Python深度學習之FastText實現(xiàn)文本分類詳解
FastText是一種典型的深度學習詞向量的表示方法,它非常簡單通過Embedding層將單詞映射到稠密空間,然后將句子中所有的單詞在Embedding空間中進行平均,進而完成分類操作2022-09-09python3編寫ThinkPHP命令執(zhí)行Getshell的方法
這篇文章主要介紹了python3編寫ThinkPHP命令執(zhí)行Getshell的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-02-02pandas 實現(xiàn)將NaN轉(zhuǎn)換為None
這篇文章主要介紹了pandas 實現(xiàn)將NaN轉(zhuǎn)換為None的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-05-05利用Tensorboard繪制網(wǎng)絡(luò)識別準確率和loss曲線實例
今天小編就為大家分享一篇利用Tensorboard繪制網(wǎng)絡(luò)識別準確率和loss曲線實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02python中requests庫+xpath+lxml簡單使用
這篇文章主要介紹了python中requests庫+xpath+lxml簡單使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-04-04