Python typing 的使用总结
1. 类型提示(Type Hints):Python 3.5引入了类型提示,这是一种新的语法特性,允许在函数声明中指定参数和返回值的预期类型。这些类型注解对Python解释器没有任何影响,但是可以被类型检查器、IDE、linter等工具用来捕获类型错误。
def greet(name: str) -> str: return 'Hello, ' + name
2. 内置类型:typing模块包含了所有Python内置类型的别名,如List、Dict、Tuple等。
from typing import List, Dict def count_words(text: str) -> Dict[str, int]: ...
3. 泛型:可以使用typing模块定义泛型类型,例如List[int]表示整数列表。
from typing import List def squares(nums: List[int]) -> List[int]: return [num ** 2 for num in nums]
4. 可选类型:Optional类型表示值可以是指定的类型,也可以是None。
from typing import Optional def find_user(user_id: int) -> Optional[User]: ...
5. 字面量类型:Literal类型用于表示变量的值只能是特定的几个字面量中的一个。
from typing import Literal def get_status(status: Literal['connected', 'disconnected']): ...
6. 类型别名:可以使用类型别名为复杂的类型注解创建简短的名称。
from typing import Dict, Any JSON = Dict[str, Any] def parse(json: JSON) -> JSON: ...
7. 范型Sequence是一个泛型类型,用于表示可迭代的、有序的、可索引的容器,如列表(list)或元组(tuple)
from typing import Sequence def get_numbers() -> Sequence[int]: return [1, 2, 3, 4, 5]