国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

更多QQ空间微信QQ好友腾讯朋友复制链接
您的位置:首頁(yè)/技術(shù)文章
文章詳情頁(yè)

Python-typing: 類型標(biāo)注與支持 Any類型詳解

【字号: 作者:豬豬瀏覽:2日期:2022-06-20 10:02:41

Any docs

Any 是一種特殊的類型。

靜態(tài)類型檢查器將所有類型視為與 Any 兼容,反之亦然, Any 也與所有類型相兼容。

這意味著可對(duì)類型為 Any 的值執(zhí)行任何操作或方法調(diào)用,并將其賦值給任何變量:

from typing import Anya = None # type: Anya = [] # OKa = 2 # OKs = ’’ # type: strs = a # OKdef foo(item: Any) -> int: # Typechecks; ’item’ could be any type, # and that type might have a ’bar’ method item.bar() ...

需要注意的是,將 Any 類型的值賦值給另一個(gè)更具體的類型時(shí),Python不會(huì)執(zhí)行類型檢查。例如,當(dāng)把 a 賦值給 s 時(shí),即使 s 被聲明為 str 類型,在運(yùn)行時(shí)接收到的是 int 值,靜態(tài)類型檢查器也不會(huì)報(bào)錯(cuò)。

此外,所有返回值無(wú)類型或形參無(wú)類型的函數(shù)將隱式地默認(rèn)使用 Any 類型:

def legacy_parser(text): ... return data# A static type checker will treat the above# as having the same signature as:def legacy_parser(text: Any) -> Any: ... return data

當(dāng)需要混用動(dòng)態(tài)類型和靜態(tài)類型的代碼時(shí),上述行為可以讓 Any 被用作 應(yīng)急出口 。

Any 和 object 的行為對(duì)比。

與 Any 相似,所有的類型都是 object 的子類型。然而不同于 Any,反之并不成立: object 不是 其他所有類型的子類型。

這意味著當(dāng)一個(gè)值的類型是 object 的時(shí)候,類型檢查器會(huì)拒絕對(duì)它的幾乎所有的操作。把它賦值給一個(gè)指定了類型的變量(或者當(dāng)作返回值)是一個(gè)類型錯(cuò)誤。

比如說:

def hash_a(item: object) -> int: # Fails; an object does not have a ’magic’ method. item.magic() ...def hash_b(item: Any) -> int: # Typechecks item.magic() ...# Typechecks, since ints and strs are subclasses of objecthash_a(42)hash_a('foo')# Typechecks, since Any is compatible with all typeshash_b(42)hash_b('foo')

使用 object 示意一個(gè)值可以類型安全地兼容任何類型。使用 Any 示意一個(gè)值地類型是動(dòng)態(tài)定義的。

補(bǔ)充:python3.5 typing — 類型標(biāo)注支持

函數(shù)接受并返回一個(gè)字符串,注釋像下面這樣:

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

在函數(shù) greeting 中,參數(shù) name 預(yù)期是 str 類型,并且返回 str 類型。子類型允許作為參數(shù)。

1.1. 類型別名

型別名通過將類型分配給別名來(lái)定義。在這個(gè)例子中, Vector 和 List[float] 將被視為可互換的同義詞:

from typing import ListVector = List[float]def scale(scalar: float, vector: Vector) -> Vector: return [scalar * num for num in vector]# typechecks; a list of floats qualifies as a Vector.new_vector = scale(2.0, [1.0, -4.2, 5.4])類型別名可用于簡(jiǎn)化復(fù)雜類型簽名。

例如:

from typing import Dict, Tuple, ListConnectionOptions = Dict[str, str]Address = Tuple[str, int]Server = Tuple[Address, ConnectionOptions]def broadcast_message(message: str, servers: List[Server]) -> None: ...# The static type checker will treat the previous type signature as# being exactly equivalent to this one.def broadcast_message(message: str,servers: List[Tuple[Tuple[str, int], Dict[str, str]]]) -> None: ...

請(qǐng)注意,None 作為類型提示是一種特殊情況,并且由 type(None) 取代。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 精品a视频 | 91精品国产91| 美国一级片免费看 | 欧美一级久久 | 在线欧美| 日本美女黄网站 | 手机看福利片 | 69视频在线观看xxxxx | 国产日韩精品欧美一区 | 亚洲欧美另类专区 | 在线a毛片免费视频观看 | 精品日本久久久久久久久久 | 美女黄频网站 | 小泽玛利亚的一级毛片的 | 欧美aaa级| 国产高清在线不卡 | 日韩欧美视频在线一区二区 | 中文字幕va一区二区三区 | 国产成人亚洲欧美三区综合 | 欧美一级毛片兔费播放 | 午夜成人在线视频 | 免费国产高清视频 | 免费公开视频人人人人人人人 | 亚洲美女视频在线 | 亚洲第一色网 | 国产一级毛片免 | 久久er精品视频 | 武松大战潘金莲三级在线 | 久久精品精品 | 国产精品成人影院 | 夜色成人免费观看 | 国产欧美日本在线 | 欧美激情一级欧美精品 | dy888午夜国产午夜精品 | 狠狠色丁香婷婷久久综合不卡 | 日韩毛片在线免费观看 | 欧美日韩精品一区二区三区 | 亚洲精品一区二区观看 | 亚欧国产| 国产欧美成人xxx视频 | 老人久久www免费人成看片 |