国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Python類型提示Type Hints示例詳解

瀏覽:113日期:2022-07-28 18:26:42
目錄為什么會(huì)有類型提示解決上述問(wèn)題,類型提示類型提示分類變量類型提示沒(méi)有使用類型提示使用了類型提示變量類型提示-元組打包變量類型提示-元組解包在類里面使用函數(shù)參數(shù)類型提示栗子一栗子二總結(jié)為什么會(huì)有類型提示

Python是一種動(dòng)態(tài)類型語(yǔ)言,這意味著我們?cè)诰帉懘a的時(shí)候更為自由,運(yùn)行時(shí)不需要指定變量類型

但是與此同時(shí) IDE 無(wú)法像靜態(tài)類型語(yǔ)言那樣分析代碼,及時(shí)給我們相應(yīng)的提示,比如字符串的 split 方法

def split_str(s): strs = s.split(',')

由于不知道參數(shù) s 是什么類型,所以當(dāng)你敲 s. 的時(shí)候不會(huì)出現(xiàn) split 的語(yǔ)法提示

解決上述問(wèn)題,類型提示

Python 3.6 新增了兩個(gè)特性 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 為我們提供更智能的提示

這些新特性不會(huì)影響語(yǔ)言本身,只是增加一點(diǎn)提示

類型提示分類

主要分兩個(gè)

變量提示:PEP 526 特性加的 函數(shù)參數(shù)提示:PEP 484 特性加的 變量類型提示沒(méi)有使用類型提示

想說(shuō)明變量的數(shù)據(jù)類型只能通過(guò)注釋

# ’primes’ is a list of integersprimes = [] # type: List[int]# ’captain’ is a string (Note: initial value is a problem)captain = ... # type: strclass Starship: # ’stats’ is a class variable stats = {} # type: Dict[str, int]使用了類型提示

from typing import List, ClassVar, Dict# int 變量,默認(rèn)值為 0num: int = 0# bool 變量,默認(rèn)值為 Truebool_var: bool = True# 字典變量,默認(rèn)為空dict_var: Dict = {}# 列表變量,且列表元素為 intprimes: List[int] = []class Starship: # 類變量,字典類型,鍵-字符串,值-整型 stats: ClassVar[Dict[str, int]] = {} # 實(shí)例變量,標(biāo)注了是一個(gè)整型 num: int

這里會(huì)用到 typing 模塊,后面會(huì)再展開詳解

假設(shè)變量標(biāo)注了類型,傳錯(cuò)了會(huì)報(bào)錯(cuò)嗎?

from typing import List# int 變量,默認(rèn)值為 0num: int = 0# bool 變量,默認(rèn)值為 Truebool_var: bool = True# 字典變量,默認(rèn)為空dict_var: Dict = {}# 列表變量,且列表元素為 intprimes: List[int] = []num = '123'bool_var = 123dict_var = []primes = ['1', '2']print(num, bool_var, dict_var, primes)# 輸出結(jié)果123 123 [] [’1’, ’2’]

它并不會(huì)報(bào)錯(cuò),但是會(huì)有 warning,是 IDE 的智能語(yǔ)法提示

Python類型提示Type Hints示例詳解

所以,這個(gè)類型提示更像是一個(gè)規(guī)范約束,并不是一個(gè)語(yǔ)法限制

變量類型提示-元組打包

# 正常的元組打包a = 1, 2, 3# 加上類型提示的元組打包t: Tuple[int, ...] = (1, 2, 3)print(t)t = 1, 2, 3print(t)# py3.8+ 才有的寫法t: Tuple[int, ...] = 1, 2, 3print(t)t = 1, 2, 3print(t)# 輸出結(jié)果(1, 2, 3)(1, 2, 3)(1, 2, 3)(1, 2, 3)

為什么要加 ...

Python類型提示Type Hints示例詳解

不加的話,元組打包的時(shí)候,會(huì)有一個(gè) warning 提示

變量類型提示-元組解包

# 正常元組解包message = (1, 2, 3)a, b, c = messageprint(a, b, c) # 輸出 1 2 3# 加上類型提示的元組解包header: strkind: intbody: Optional[List[str]]# 不會(huì) warning 的栗子header, kind, body = ('str', 123, ['1', '2', '3'])# 會(huì)提示 warning 的栗子header, kind, body = (123, 123, ['1', '2', '3'])

Optional 會(huì)在后面講 typing 的時(shí)候詳解

在類里面使用

class BasicStarship: captain: str = ’Picard’ # 實(shí)例變量,有默認(rèn)值 damage: int # 實(shí)例變量,沒(méi)有默認(rèn)值 stats: ClassVar[Dict[str, int]] = {} # 類變量,有默認(rèn)值

ClassVar

是 typing 模塊的一個(gè)特殊類 它向靜態(tài)類型檢查器指示不應(yīng)在類實(shí)例上設(shè)置此變量 函數(shù)參數(shù)類型提示

不僅提供了函數(shù)參數(shù)列表的類型提示,也提供了函數(shù)返回的類型提示

栗子一

# 參數(shù) name 類型提示 str,而函數(shù)返回值類型提示也是 strdef greeting(name: str) -> str: return ’Hello ’ + name栗子二

def greeting(name: str, obj: Dict[str, List[int]]) -> None: print(name, obj)總結(jié)

到此這篇關(guān)于Python類型提示Type Hints的文章就介紹到這了,更多相關(guān)Python類型提示Type Hints內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 韶关市| 宜宾县| 嘉鱼县| 申扎县| 鸡西市| 灵璧县| 湖南省| 富阳市| 民丰县| 襄城县| 新源县| 时尚| 黄骅市| 房山区| 剑阁县| 新竹市| 泽库县| 东源县| 新沂市| 香港 | 闻喜县| 永城市| 吴堡县| 泌阳县| 扎囊县| 金华市| 闽清县| 东乌| 桐梓县| 陕西省| 海门市| 胶南市| 阳朔县| 福建省| 万安县| 义乌市| 光泽县| 嘉义市| 台安县| 洪雅县| 大名县|