跳到主要内容

类型标注

基本类型

  • 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