目錄
- 為什麼會有類型提示
- 解決上述問題,類型提示
- 類型提示分類
- 變量類型提示
- 沒有使用類型提示
- 使用瞭類型提示
- 變量類型提示-元組打包
- 變量類型提示-元組解包
- 在類裡面使用
- 函數參數類型提示
- 栗子一
- 栗子二
- 總結
為什麼會有類型提示
Python是一種動態類型語言,這意味著我們在編寫程式碼的時候更為自由,運行時不需要指定變量類型
但是與此同時 IDE 無法像靜態類型語言那樣分析程式碼,及時給我們相應的提示,比如字符串的 split 方法
def split_str(s): strs = s.split(",")
由於不知道參數 s 是什麼類型,所以當你敲 s. 的時候不會出現 split 的語法提示
解決上述問題,類型提示
Python 3.6 新增瞭兩個特性 PEP 484 和 PEP 526
- PEP 484:https://www.python.org/dev/peps/pep-0484/
- PEP 526:https://www.python.org/dev/peps/pep-0526/
幫助 IDE 為我們提供更智慧的提示
這些新特性不會影響語言本身,隻是增加一點提示
類型提示分類
主要分兩個
- 變量提示:PEP 526 特性加的
- 函數參數提示:PEP 484 特性加的
變量類型提示
沒有使用類型提示
想說明變量的數據類型隻能通過註釋
# 'primes' is a list of integers primes = [] # type: List[int] # 'captain' is a string (Note: initial value is a problem) captain = ... # type: str class Starship: # 'stats' is a class variable stats = {} # type: Dict[str, int]
使用瞭類型提示
from typing import List, ClassVar, Dict # int 變量,默認值為 0 num: int = 0 # bool 變量,默認值為 True bool_var: bool = True # 字典變量,默認為空 dict_var: Dict = {} # 列表變量,且列表元素為 int primes: List[int] = [] class Starship: # 類變量,字典類型,鍵-字符串,值-整型 stats: ClassVar[Dict[str, int]] = {} # 實例變量,標註瞭是一個整型 num: int
這裡會用到 typing 模塊,後面會再展開詳解
假設變量標註瞭類型,傳錯瞭會報錯嗎?
from typing import List # int 變量,默認值為 0 num: int = 0 # bool 變量,默認值為 True bool_var: bool = True # 字典變量,默認為空 dict_var: Dict = {} # 列表變量,且列表元素為 int primes: List[int] = [] num = "123" bool_var = 123 dict_var = [] primes = ["1", "2"] print(num, bool_var, dict_var, primes) # 輸出結果 123 123 [] ['1', '2']
它並不會報錯,但是會有 warning,是 IDE 的智慧語法提示
所以,這個類型提示更像是一個規范約束,並不是一個語法限制
變量類型提示-元組打包
# 正常的元組打包 a = 1, 2, 3 # 加上類型提示的元組打包 t: Tuple[int, ...] = (1, 2, 3) print(t) t = 1, 2, 3 print(t) # py3.8+ 才有的寫法 t: Tuple[int, ...] = 1, 2, 3 print(t) t = 1, 2, 3 print(t) # 輸出結果 (1, 2, 3) (1, 2, 3) (1, 2, 3) (1, 2, 3)
為什麼要加 …
不加的話,元組打包的時候,會有一個 warning 提示
變量類型提示-元組解包
# 正常元組解包 message = (1, 2, 3) a, b, c = message print(a, b, c) # 輸出 1 2 3 # 加上類型提示的元組解包 header: str kind: int body: Optional[List[str]] # 不會 warning 的栗子 header, kind, body = ("str", 123, ["1", "2", "3"]) # 會提示 warning 的栗子 header, kind, body = (123, 123, ["1", "2", "3"])
Optional 會在後面講 typing 的時候詳解
在類裡面使用
class BasicStarship: captain: str = 'Picard' # 實例變量,有默認值 damage: int # 實例變量,沒有默認值 stats: ClassVar[Dict[str, int]] = {} # 類變量,有默認值
ClassVar
- 是 typing 模塊的一個特殊類
- 它向靜態類型檢查器指示不應在類實例上設置此變量
函數參數類型提示
不僅提供瞭函數參數列表的類型提示,也提供瞭函數返回的類型提示
栗子一
# 參數 name 類型提示 str,而函數返回值類型提示也是 str def greeting(name: str) -> str: return 'Hello ' + name
栗子二
def greeting(name: str, obj: Dict[str, List[int]]) -> None: print(name, obj)
總結
到此這篇關於Python類型提示Type Hints的文章就介紹到這瞭,更多相關Python類型提示Type Hints內容請搜索以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支援!
You may also like
相关贴文:
近期文章
- 使用 PagePilot 作為實現此目的的捷徑! #dropshipping #shopify #ecommerce #ai
- SHOPIFY REBELLON vs BOOM ESPORT [BO2] – TIMADO, YOPAJ 對上 JACKKY, MAC – ESL ONE BANGKOK 2024 DOTA 2
- Dota2 – Team Spirit VS Shopify Rebellion – ESL One 曼谷
- 德國滑雪選手如何打造 Shopify?
- 2024 年 12 月 2 款必銷產品🚀(Shopify 得獎者)
- Shopify Rebellon vs 獵鷹隊 [BO2] – TIMADO, YOPAJ 對 SKITER, AMMAR – ESL ONE BANGKOK 2024 DOTA 2
- 添加這些直銷產品並觀察您的銷售爆炸式增長#dropshipping #shopify
- 我如何在 19 歲時開始在 30 天內從巴基斯坦開始 Shopify Dropshipping 從 0 美元到 1000 美元
- 我打破了 Shopify 應用程式商店世界紀錄!
標籤雲
C/C++
Dropshipping
Java
JavaScript
Joomla
Linux
OSCHINA博客
python
REBELLION
Rust
Shopify
Shopify 商店設置
Shopify 獲獎產品
Shopify 直銷
代發貨
和
商店
商業
喬姆拉
在
如何創建 Shopify 商店
如何在
如何建立 Shopify 商店
如何開始代出貨
年
店舖教學
店鋪化
店鋪培訓
教學
獲獎產品
直銷 Shopify
直銷教程
科技資訊
程式碼
網路業務
網路賺錢
臉書廣告
與
詳解
購物
跨平台
運輸船
適合初學者的 Shopify 教學課程
適合初學者的直銷
電子商務
發佈留言