91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

Python如何添加類型標注

發布時間:2021-06-14 11:10:31 來源:億速云 閱讀:574 作者:小新 欄目:編程語言

小編給大家分享一下Python如何添加類型標注,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

給 Python 標注類型

首先和讀者聲明我們的實驗環境。

? python --version Python 3.7.0

本文參考了 Python3.7 的 中文文檔[1] 。

我們聲明一個變量,通過如下方式聲明類型:

a: int = 1 b: float = .2 print(f'{a}, {b}')  # 1, 0.2

遺憾的是,在 Python 中,a: int = 1 這句話并沒什么意義,說的直白點,就是『脫褲子放屁』;再說得好聽點, Python  的類型標注放在這里這么用完全沒有必要。

首先, a = 1 中解釋器會自動把 a 推斷為 int 類型,諸如 Pylance 的 Language Server 也會在我們書寫時提供 int  的方法補全。

Python如何添加類型標注

此外,就算我們把 a 的類型規定為 int ,然后將 str 賦給 a ,解釋器和 Language Server 也完全不會報錯。如下。

a: int a = '1' print(a)  # 非常迷

做上述類型檢查對于現代編譯技術而言應該是毫無難度的,但這里就是沒有報錯、沒有警告。這大概與 Python 的設計哲學有關。

我們看看 TypeScript 是如何表現的:

Python如何添加類型標注

TypeScript 把自己當作靜態類型語言,要求書寫時就確保類型的正確性。

使用 typing

盡管 Python 并不強制要求類型的正確性,并且會自動幫我們做強類型轉換,但是我們依舊可以享受類型標注帶來的諸多便利。

比如,我們現在要定義一個函數 foo ,函數返回一個列表 dogList ,列表中的元素都是我們自定義的類 Dog 的實例。

如果沒有類型標注,我們無法獲得智能提示,如下。

Python如何添加類型標注

Python 中從來就不要求 List 對象中的元素都是同一類型,因此,解釋器或者 Language Server  也不會「吃力不討好」般地去把程序運行一邊,然后推斷你這個 List 里放的東西是什么類型。

自然,當你從 List 中拿元素時(比如上述的 dogList[0] ),它沒法告訴你 List 中你拿的元素是什么類型,也就沒辦法提示(No  suggestion.)。

**這與實際業務場景不符,因為我們寫代碼時,在一個列表中裝入的往往都是同一類型。**為了在取元素時獲得補全提示,我們可以使用 typing.List +  極簡的泛型 。如下。

Python如何添加類型標注

我們規定, foo 返回的元素必是一個 List ,且其中元素類型是 Dog 類型。然后我們的 dogList[0] 也被識別成了 Dog  類型,獲得了補全。舒服。

題外話:聰明的 Pylance

其實 Pylance 自己也可以做一些類型推導。比如我們使用生成器生成列表時, Pylance 就會判斷這個列表中元素屬于什么類型:

Python如何添加類型標注

以上是“Python如何添加類型標注”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

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

AI

江山市| 大埔区| 沈阳市| 手机| 剑河县| 益阳市| 武陟县| 南昌市| 高邑县| 茂名市| 定襄县| 柞水县| 仪征市| 黔江区| 四子王旗| 宕昌县| 奉化市| 桑日县| 宝应县| 舞钢市| 叙永县| 宣汉县| 荣昌县| 道孚县| 邛崃市| 南溪县| 惠来县| 义马市| 宁阳县| 建瓯市| 土默特左旗| 加查县| 邓州市| 鹰潭市| 康平县| 西吉县| 改则县| 舟山市| 南投市| 百色市| 乐东|