在Python中,类型注解是一种在变量、函数参数和函数返回值中指定类型的方法。类型注解不会影响程序的运行,但可以提供有关变量和函数预期类型的信息,可以帮助开发者更好地理解代码,并提供给IDE(集成开发环境)工具更好的代码补全和错误检查。
类型注解使用冒号(:)来指定变量或参数的类型,使用箭头(->)表示返回值的类型,例如:
name: str = 'John' # name变量的类型为str
age: int = 25 # age变量的类型为int
def greet(name: str) -> str:
return 'Hello ' + name # 函数参数name的类型为str,函数返回值类型为str
类型注解可以用于函数参数和返回值,也可以用于变量。可以使用多种类型,如str、int、bool、list、dict等。类型注解还可以与特殊的类和类型提示库一起使用,以更详细地指定变量和参数的类型信息。
mypy
& pyright
: python的静态类型检查器
默认情况下, 即使你已经标注了类型注解,但是如果你传入一个不符合这个类型的参数或值,python解释器也不会做出错误或警告, 而是忽略类型注解,所以这些类型注解相当于就是给自己和IDE看的注释
为了使python的类型功能更加完善,我们可以使用mypy和pyright等静态类型检查器,检查我们的代码是否符合类型注解,相当于给我们的Python带来了一部分静态类型语言的功能
mypy
下载及使用
可以使用以下命令下载mypy:
pip install mypy
#清华源
pip install mypy -i https://pypi.tuna.tsinghua.edu.cn/simple
#Anaconda
conda install mypy
这样我们就可以直接使用mypy命令来给我们的python文件进行类型检查了:
mypy file.py
typing
库: 对于python类型注解和静态类型使用的补充库
一般情况下的基本类型和自定义类型功能无法满足完整的Python静态类型化需求,我们可以使用typing库更好地改善这种情况
官方的typing文档: There
typing提供的常用的类型注解类型
前置芝士: typing泛型
typing提供泛型对不同容器进行不同的类型注解支持
python使用[]
中括号进行函数和类的泛型
Literal[]
: 字面值常量
Literal
的类似于有值的枚举, 使用Literal
的类型标注允许它下标中的字面常量
# 允许给NumberSign赋值"zero", "positive" 和 "negative" 三种值
NumberSign: Literal["zero",