FastAPI基础:1. 类型标识
FastAPI基础:1. 类型标识

FastAPI基础:1. 类型标识

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)

发表回复

您的电子邮箱地址不会被公开。