美文网首页
python 标准库学习笔记《二》

python 标准库学习笔记《二》

作者: 萧酃 | 来源:发表于2021-11-09 13:32 被阅读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')
    

    相关文章

      网友评论

          本文标题:python 标准库学习笔记《二》

          本文链接:https://www.haomeiwen.com/subject/wfpmzltx.html