文章目录
typing库
一、 简介
Python是一门弱类型的语言,很多时候我们可能不清楚函数参数类型或者返回值类型,很有可能导致一些类型没有指定方法,在写完代码一段时间后回过头看代码,很可能忘记了自己写的函数需要传什么参数,返回什么类型的结果,就不得不去阅读代码的具体内容,降低了阅读的速度,typing模块可以很好的解决这个问题
Python 运行时并不强制标注函数和变量类型。类型标注可被用于第三方工具,比如类型检查器、集成开发环境、静态检查器等
typing的主要作用有:
- 类型检查,防止运行时出现参数、返回值类型不符
- 作为开发文档附加说明,方便使用者调用时传入和返回参数类型
- 模块加入不会影响程序的运行不会报正式的错误,pycharm支持typing检查错误时会出现黄色警告
官方文档:【https://docs.python.org/zh-cn/3/library/typing.html】
语法:
def 函数名(参数: 数据类型) -> 返回值类型:
pass
变量名: 数据类型 = 值
二、 别名
1、 类型别名
要定义一个类型别名,可以将一个类型赋给别名。类型别名可用于简化复杂类型签名,同时类型别名适用于简化复杂的类型签名
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
# @author: A.L.Kun
# @file : test.py
# @time : 2022/5/13 16:54
from typing import Sequence
ConnectionOptions = dict[str, int] # 表示字典中的键为字符串类型,值为整型
Address = tuple[str, int, ...] # 表示元组的第一个数据为字符串,第二个数据为整型,里面只能存储两个数据,有省略号表示里面可以添加n个整型数据
Server = tuple[Address, ConnectionOptions]
def broadcast_message(message: str,
servers: Sequence[Server] # 表示一个序列对象里面存储了[tuple[tuple[str, int], dict[str, int]]]
) -> None: # 返回值为空
...
broadcast_message("a", [(("a", 1, 2), {
"a": 1})])
2、 NewType
使用NewType
辅助函数创建不同的类型,静态类型检查器会将新类型视为它是原始数据的子类,相当于C++
里面的`typedef
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
# @author: A.L.Kun
# @file : test.py
# @time : 2022/5/13 16:54
from typing import NewType
UserId