婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Python-typing: 類型標注與支持 Any類型詳解

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

熱門標簽:唐山智能外呼系統一般多少錢 騰訊外呼線路 公司電話機器人 哈爾濱ai外呼系統定制 白銀外呼系統 海南400電話如何申請 廣告地圖標注app 陜西金融外呼系統 激戰2地圖標注

Any docs

Any 是一種特殊的類型。

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

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

from typing import Any
a = None    # type: Any
a = []      # OK
a = 2       # OK
s = ''      # type: str
s = a       # OK
def 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 object
hash_a(42)
hash_a("foo")
# Typechecks, since Any is compatible with all types
hash_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 List
Vector = 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, List
ConnectionOptions = 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) 取代。

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

您可能感興趣的文章:
  • Python3 類型標注支持操作
  • Python標準庫之typing的用法(類型標注)
  • 淺談怎么給Python添加類型標注

標簽:益陽 上海 鷹潭 黔西 黑龍江 常德 惠州 四川

巨人網絡通訊聲明:本文標題《Python-typing: 類型標注與支持 Any類型詳解》,本文關鍵詞  Python-typing,類型,標注,與,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Python-typing: 類型標注與支持 Any類型詳解》相關的同類信息!
  • 本頁收集關于Python-typing: 類型標注與支持 Any類型詳解的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 宝应县| 仁寿县| 中江县| 开江县| 四平市| 桐庐县| 呼玛县| 商都县| 岐山县| 河东区| 兴文县| 广州市| 博白县| 南昌市| 尼木县| 锦屏县| 合水县| 房山区| 故城县| 潮安县| 仪征市| 页游| 宿迁市| 石渠县| 新巴尔虎右旗| 尚义县| 洱源县| 饶平县| 三原县| 阜康市| 东海县| 邳州市| 巨鹿县| 绥德县| 靖安县| 鄂州市| 武川县| 卓资县| 民勤县| 右玉县| 呼图壁县|