ps:Python3.5 引入,提供编写代码时的规范,方法联想 26.1. typing — 类型标注支持 — Python 3.5.10 文档

常用类型标识
基础数据
- str - 字符串
- int - 数字
- bool - 布尔
- Any - 任意类型
- Callback - 可调用类型;基本用于函数 Callable[[Arg1Type, Arg2Type], ReturnType]
- List[str] - 列表且内部元素 都是字符串类型
- Optional[str] - 可选类型(字符串) 默认为 None
"""
1、类型标识 Python3.5 引入
"""
from typing import *
name = "777"
name = 1
my_name: str = "7777"
my_name = 1 # Expected type 'str', got 'int' instead
age: int = 18
is_true: bool = False
# 列表 里面元素需要 是 字符串
names: List[str] = [1, 2, "name"]
# 序列类型 \ list\ str\ tuple\ set
loves: Sequence[str] = ["123", "123"]
loves: Sequence[str] = "123"
loves: Sequence[str] = 1
# 字典 key 是 字符串类型 value 是int类型
info: Dict[str, int] = {"age": 18}
# Mapping
infoss: Mapping[str, int] = {1: 1}
# 类型别名
infoType = Dict[str, Any]
people: infoType = {"info": 2}
# 联合类型 可以是布尔、也可以是int
flag: Union[bool, int] = 1 # True
# 可选类型, 可以为none,不为None 就需要是int类型
age_optional: Optional[int] = None
# -> str 返回类型
def func1(a: int) -> str:
return str(a)
# 可调用类型
def hello(func: Callable[[int], str]):
return func(13)
print(hello(func1))
# 创建新类型
UserId = NewType("UserId", int)
uuid: UserId = 1
# 泛型:运行时根据用户传入类型决定类型
# 官方定义:由于无法以通用方式静态推断有关保存在容器中的对象的类型信息,因此抽象基类已扩展为支持订阅以表示容器元素的预期类型。
T = TypeVar("T")
# 泛型类
class Info(Generic[T]):
def __init__(self, value: T):
self.info = value
Info(value=1)
Info(value="333")
Info(value=True)