亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

Python-typing: 類型標注與支持 Any類型詳解

瀏覽:3日期:2022-06-20 10:02:41

Any docs

Any 是一種特殊的類型。

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

這意味著可對類型為 Any 的值執行任何操作或方法調用,并將其賦值給任何變量:

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 類型的值賦值給另一個更具體的類型時,Python不會執行類型檢查。例如,當把 a 賦值給 s 時,即使 s 被聲明為 str 類型,在運行時接收到的是 int 值,靜態類型檢查器也不會報錯。

此外,所有返回值無類型或形參無類型的函數將隱式地默認使用 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

當需要混用動態類型和靜態類型的代碼時,上述行為可以讓 Any 被用作 應急出口 。

Any 和 object 的行為對比。

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

這意味著當一個值的類型是 object 的時候,類型檢查器會拒絕對它的幾乎所有的操作。把它賦值給一個指定了類型的變量(或者當作返回值)是一個類型錯誤。

比如說:

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 示意一個值可以類型安全地兼容任何類型。使用 Any 示意一個值地類型是動態定義的。

補充:python3.5 typing — 類型標注支持

函數接受并返回一個字符串,注釋像下面這樣:

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

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

1.1. 類型別名

型別名通過將類型分配給別名來定義。在這個例子中, 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])類型別名可用于簡化復雜類型簽名。

例如:

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: ...

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

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持好吧啦網。如有錯誤或未考慮完全的地方,望不吝賜教。

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 国产精品久久免费观看 | 欧美一级特黄刺激爽大片 | 国产一二三区在线 | 国产日韩欧美高清 | 久久激情视频 | 亚洲专区区免费 | 欧美一级片在线看 | 亚洲精品一区久久狠狠欧美 | 亚洲一区二区三区精品影院 | 精品国产欧美一区二区五十路 | 久久久久免费精品国产小说 | 精品女同一区二区三区免费站 | 婷婷午夜影院 | 一本伊大人香蕉高清在线观看 | 美国一级片免费看 | 91短视频版在线观看免费大全 | 色永久| 黄色一级网站 | 99九九精品免费视频观看 | 日韩视频在线观看一区二区 | 亚洲精品欧美精品一区二区 | 久久99亚洲综合精品首页 | 九九久久久久午夜精选 | 一级特黄特黄毛片欧美的 | 国产黄色片网站 | 国产99久9在线视频 国产99久久精品 | 精品久久久久久久 | 鲁丝丝国产一区二区 | 亚洲国产情侣偷自在线二页 | 欧美一区二区亚洲 | 亚洲精品主播一区二区三区 | 国产丝袜制服在线 | 色综合网亚洲精品久久久 | 在线免费一区 | 亚洲欧美一级夜夜爽w | 午夜色婷婷 | 在线 中文字幕 日韩 欧美 | 国产精品三级一区二区 | 92国产福利午夜757小视频 | 国产精品亚洲综合一区在线观看 | 亚洲国内精品 |