This module provides runtime support for type hints。
下面的函数接收与返回的都是字符串,注解方式如下:
def greeting(name: str) -> str: return name
greeting
函数中,参数 name
的类型是 str
,返回类型也是 str
。
其实是提示,并没有强制报错:不过有了类型注解,一些 IDE 是可以识别出来并提示的,比如 PyCharm 就可以识别出来在调用某个方法的时候参数类型不一致
类型定义方法
以下几种类型的定义方法:
- None
- 内置的类(int, str,float)
- 标准库(typing 模块)
- 第三方扩展库
- 抽象出的基类
- 用户定义的类
- 类别名 type aliases(
s = str
,然后用 s) - 使用 NewType
- 使用 own generic types
复杂结构
对于一些结构的数据类型就不能用上述简单的方法表示了,比如:
names: list = ['lily', 'tom'] version: tuple = (6, 6, 6) operations: dict = {'sad': False, 'happy': True}
以上虽然定义了最外层的数据结构,如列表、元组、字典,但他们每个元素的类型是什么也没有定义清楚,因此需要在 typing 库的帮助下来定义准确内部的结构:
from typing import List, Tuple, Dict names: List[str] = ['lily', 'tom'] version: Tuple[int, int, int] = (6, 6, 6) operations: Dict[str, bool] = {'sad': False, 'happy': True}
参考文档:
- https://www.gairuo.com/p/python-type-annotations
- https://docs.python.org/zh-cn/3/library/typing.html