您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關Python靜態類型檢查新工具之pyright怎么用,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
Python是一門動態類型的語言,民間流傳一種說法叫”動態一時爽,重構火葬場”,聽起來夠嚇人的,好在這門語言在不斷地改進,包括對 PEP484 引入的類型提示(Type Hint),就是在某種程度上,讓Python能夠像靜態語言一樣支持類型聲明,例如:
def greeting(name: str) -> str: return 'Hello ' + name
這就意味著,如果有人調用 greeting函數的時候,傳入的參數不是字符串,你用靜態類型檢查工具一下就能查出來哪些地方沒有傳入正確類型的值。而 pyright 就是為此而生。
pyright 核心特性:
TypeScript 編寫,速度快
不依賴Python環境
可配置性強
我們可以直接在 vscode 搜索安裝插件 pyright
命令行工具可以使用 npm 安裝
sudo npm i -g pyright
如何使用pyright
假設有個python文件 hello.py,里面代碼是:
def greeting2(age:int) -> str: print("hello") greeting2("nihao") greeting2(1)
注意我給greeting2中的參數類型聲明是int,返回的返回值是字符串類型,但是在函數中并沒有看到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),函數聲明返回str類型的值,但是卻沒有返回
Argument of type 'str' cannot be assigned to parameter of type 'int' (4, 11), 字符串值不能復制給int類型參數
剩下的事情就是按照錯誤提示修正, 正如 PEP484 所說的那樣,Type Hint is not role , is tool。 它并不是規則,只是一個工具,幫助我們規避某些錯誤。即使你傳錯了參數,程序編譯時并不會報錯,只有執行到具體的業務代碼的時候才會出錯。
關于“Python靜態類型檢查新工具之pyright怎么用”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。