當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python typing.TypeVar用法及代碼示例


用法:

class typing.TypeVar

類型變量。

用法:

T = TypeVar('T')  # Can be anything
A = TypeVar('A', str, bytes)  # Must be str or bytes

類型變量的存在主要是為了靜態類型檢查器的好處。它們用作泛型類型以及泛型函數定義的參數。有關泛型類型的更多信息,請參閱Generic。通用函數的工作方式如下:

def repeat(x: T, n: int) -> Sequence[T]:
    """Return a list containing n references to x."""
    return [x]*n

def longest(x: A, y: A) -> A:
    """Return the longest of two strings."""
    return x if len(x) >= len(y) else y

後一個示例的簽名本質上是 (str, str) -> str(bytes, bytes) -> bytes 的重載。另請注意,如果參數是 str 的某個子類的實例,則返回類型仍然是普通的 str

在運行時,isinstance(x, T) 將引發 TypeError 。通常,isinstance()issubclass() 不應與類型一起使用。

類型變量可以通過傳遞標記為協變或逆變covariant=True或者contravariant=True.看PEP 484更多細節。默認情況下,類型變量是不變的。或者,類型變量可以使用指定上限bound=<type>.這意味著替換(顯式或隱式)類型變量的實際類型必須是邊界類型的子類,請參閱PEP 484.

相關用法


注:本文由純淨天空篩選整理自python.org大神的英文原創作品 typing.TypeVar。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。