python 标准库学习笔记《二》

2021-11-09  本文已影响0人  萧酃

typing 类型提示(type hints)

python 是弱类型语言,添加参数与返回值类型提示,可提高代码可读性, 并且在IDE环境支持类型检查

常用类型

int,long,float: 整型,长整形,浮点型;
bool,str: 布尔型,字符串类型;
List, Tuple, Dict, Set:列表,元组,字典, 集合;
Iterable,Iterator:可迭代类型,迭代器类型;
Generator:生成器类型;

类型别名

可将特殊类型赋予别名, 从而指定类型名

Vector = List[float]        #指定一个元素全是float类型的列表

ConnectionOptions = dict[str, str]
Address = tuple[str, int]
Server = tuple[Address, ConnectionOptions]

NewType

用于创建自己的类型

from typing import NewType
UserId = NewType('UserId', int)
some_id = UserId(524313)

Any

兼容所有类型

NoReturn

标记没有返回值的函数特殊类型

TypeAlias

显示声明类型别名

from typing import TypeAlias
Factors: TypeAlias = list[int]

Tuple

元组类型
Tuple[X,Y] 二项元组类型
Tuple[X,Y,Z] 二项元组类型

Union

参数类型必须是某一种,不可继承

Union[Union[int, str], float] == Union[int, str, float]
Union[int] == int
Union[int, str, int] == Union[int, str] == int | str
Union[int, str] == Union[str, int]

Optional

可选参数


Type

可接受指定类作为参数

class User: ...
class BasicUser(User): ...
class ProUser(User): ...
class TeamUser(User): ...
# Accepts User, BasicUser, ProUser, TeamUser, ...
def make_new_user(user_class: Type[User]) -> User:
    return user_class()

Literal

对给定参数进行类型验证

def validate_simple(data: Any) -> Literal[True]:  # always returns True
      pass
MODE = Literal['r', 'rb', 'w', 'wb']
def open_helper(file: str, mode: MODE) -> str:
        pass
open_helper('/some/path', 'r')  # Passes type check
open_helper('/other/path', 'typo')  # Error in type checker

Final

告知类型检查器某名称不能再次赋值或在子类中重写的特殊类型构造器

TypedDict(dict)

TypedDict 声明一个字典类型,该类型预期所有实例都具有一组键集,其中,每个键都与对应类型的值关联。运行时不检查此预期,而是由类型检查器强制执行

class Point2D(TypedDict):
    x: int
    y: int
    label: str

a: Point2D = {'x': 1, 'y': 2, 'label': 'good'}  # OK
b: Point2D = {'z': 3, 'label': 'bad'}           # Fails type check

assert Point2D(x=1, y=2, label='first') == dict(x=1, y=2, label='first')
上一篇下一篇

猜你喜欢

热点阅读