常用类型提示
int、float、long
bool、str List、Dict、Tuple、Set Iterable、Iterator:可迭代类型、迭代器类型 Generator:生成器类型
from typing import List, Set, Tuple
# a为int型、b为字符串类型、f为浮点型、b为布尔型、d为字典、s为集合、ll为列表
def add(a: int, string: str, f: float, b: bool, d: dict, s: set, ll: list):
return(a, string, f, b, d, s, ll)
# 嵌套类型 List类型嵌套子类型str
def notice(name: List[str], info: Tuple[int, str]):
print(f"name: {name}, info: {info}")
类型别名
把类型赋给别名,就可以定义类型别名
# 类型别名
Connectionoptions = Dict[str, str]
Address = Tuple[str, int]
Server = Tuple[Address, Connectionoptions]
def message(message: str, servers: Server):
print(message, servers)
message_text = "发送信息"
servers = (("127.0.0.1", 8080), {"name": "zaygee"})
message(message_text, servers)
# 发送信息 (('127.0.0.1', 8080), {'name': 'zaygee'})
NewType
NewType可辅助创建不同的类型,NewType(name, tp)返回一个函数,这个函数返回其原本的值
from typing import NewType
UserId = NewType("User", int)
id = UserId(4444)
print(type(id))
# <class 'int'>
可调对象-Callable
用 Callable[[Arg1Type, Arg2Type], ReturnType] 实现类型提示
def name(name: str):
print(name)
# Callable作为函数参数使用
def get_name(arg: Callable[[str], None]):
return arg
res = get_name(name)
res('zaygee')
# 输出
# zaygee
泛型-Generic
from typing import TypeVar
T = TypeVar('T') # 任意类型
N = TypeVar('N', str, bytes) # 指定str或者bytes类型
def first(a: T, b: N):
print(a, b)
任意类型-Any
静态类型检查器认为所有类型均与 Any 兼容
from typing import Any
def legacy_parser(text: Any) -> Any:
...
return data
联合类型-Union
联合类型,Union[str, float]表示可以是字符串类型也可以是浮点型
from typing import Union
# int 或者 str
var = Union[int, str]
可选类型-Optional
可选类型
Optional[str] == Union[int, None]
# 可选类型
from typing import Optional
def test_optional(name: Optional[str] = None):
print(name)
test_optional()
# 输出 None