中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python靜態類型檢查新工具之pyright怎么用

發布時間:2021-07-22 14:27:57 來源:億速云 閱讀:199 作者:小新 欄目:開發技術

這篇文章將為大家詳細講解有關Python靜態類型檢查新工具之pyright怎么用,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

Python是一門動態類型的語言,民間流傳一種說法叫”動態一時爽,重構火葬場”,聽起來夠嚇人的,好在這門語言在不斷地改進,包括對 PEP484 引入的類型提示(Type Hint),就是在某種程度上,讓Python能夠像靜態語言一樣支持類型聲明,例如:

def greeting(name: str) -> str:
 return 'Hello ' + name

這就意味著,如果有人調用 greeting函數的時候,傳入的參數不是字符串,你用靜態類型檢查工具一下就能查出來哪些地方沒有傳入正確類型的值。而 pyright 就是為此而生。

pyright 核心特性:

  • TypeScript 編寫,速度快

  • 不依賴Python環境

  • 可配置性強

我們可以直接在 vscode 搜索安裝插件 pyright

Python靜態類型檢查新工具之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中會直接有錯誤提示信息:

Python靜態類型檢查新工具之pyright怎么用

如果我們用 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

提示有兩處問題:

  1. Function with declared type of str must return value (1, 28),函數聲明返回str類型的值,但是卻沒有返回

  2. 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怎么用”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

扎赉特旗| 九寨沟县| 南岸区| 达日县| 成都市| 克东县| 无极县| 喀喇| 禹城市| 襄樊市| 武乡县| 长宁区| 长治县| 盐津县| 确山县| 泸水县| 蛟河市| 宁乡县| 临潭县| 盐山县| 全椒县| 阳新县| 马山县| 新龙县| 新晃| 西藏| 大关县| 南涧| 栾城县| 鹿泉市| 临沧市| 宜昌市| 永康市| 南和县| 河池市| 繁昌县| 宁晋县| 沅江市| 手游| 青田县| 津市市|