前言

typing 是在 python 3.5 才有的模块

前置学习

常用类型提示:

Python - typing 模块 —— 常用类型提示_eli的博客-


Any Type

  • 一种特殊的类型是 Any
  • 静态类型检查器会将每种类型都视为与 Any 兼容,将 Any 视为与每种类型兼容

小栗子

# Any
from typing import Any

a = None  # type: Any
a1 = []  # OK
a2 = 2  # OK

s = ''  # type: str
s1 = a  # OK


def foo(item: Any) -> int:
    # Typechecks; 'item' 可以是任意类型
    print(item)
    return 1


foo(a)
foo(a1)
foo(a2)
foo(s)
foo(s1)

隐式使用 Any

def legacy_parser(text):
    ...
    return data


# 上述写法等价于下述写法
# 所有没有返回类型或参数类型的函数将隐式默认使用 Any


def legacy_parser(text: Any) -> Any:
    ...
    return data

Union

Optional

Python - typing 模块 —— Optional_eli的博客