类型标注
基本类型
- None;
- 整形:int;
- 浮点型:float;
- 字符串:str;
- 列表:list;
- 元组:tuple;
- 字典:dict;
- 集合:set,
- object_name:自定义对象。
使用标注
变量
a: str = 'kxh'
a: list[int] = [1, 2, 3]
ds: gdal.Dataset = gdal.Open('temporary_raster.tif')
set
- set 元素数据类型相同。
s: Set[int] = {1, 2, 3}
list
- list 元素数据类型可以不同,
- 可使用 Union。
l: List[Union[int, str, bool]] = [1, 2, 3, 'a', 'b', True]
tuple
- 根据索引位置,逐个标注;
t: Tuple[int, str, bool] = (3, 'ok', True)
dict
- 具有两个参数,
- 第一个参数表示 key 数据类型,
- 第二个参数表示 value 数据类型。
- 常与 Union 结合使用。
d: Dict[Union[str, int], Union[str, int, float]] = {'ok': 4, 3: 'ok', 4: 3.2}
函数
- 函数参数;
- 函数参数对其函数值进行类型标注,
- *args 和 **kwargs 无需遵循 tuple 和 dict 的标注规则,
- 仅标注其期望值类型。
- 函数返回值。
- () -> + 标注 + :,
- 除 None,必须具有和标注类型对应的 return 语句,
- 否则有错误。
def get_name(*names: str) -> list[str]:
name_list: list[str] = list()
for name in names:
name_list.append(name)
return name_list
def get_name(*names: str) -> None:
print(names)
类型嵌套
类型嵌套
list[str]
list[Union[str, dict[str, int]]]
标注别名
标注别名
Point = Tuple[float, float, float]
def compute_distance(p1: Point, points: List[Point]):
pass
高级类型
引入模块
from typing import Optional, Union
Optional
- 既可以是 Optional 指定类型,
- 也可以是 None。
name: Optional[str] = None
Union
- 可以是 Union 中的任一类型。
args: Union[int, float] = 1