Python类型注解
Python类型注解
学习网址
第1个是详细版,第2个是简单版
注意
类型注解仅仅是提供给编辑器进行类型检查的机会,也就是起提示的作用,对 Python 程序的运行不会产生任何影响。也就是说,Python 跟以前一样自由,即使你进行了错误的类型赋值,只要不直接引发错误,程序依旧可以运行。
要有报错的话,需要装一些插件,如vscode的Pylance
变量
1 |
|
其实就是在变量的后面加:type
,其他照旧
在指定之后,此变量不应该被赋值为其他类型(不过解释器不会报错),在 VS Code中,安装好类型注解插件 Pylance 后,如果写出下面的代码:
1 |
|
那么编辑器会用醒目的方式告诉你:孙子,你这里的类型写错了!
函数
普通函数
1 |
|
在形参上还是如上文一样,->type
写括号后面代表返回值,如果没有返回值,可以写->None
带默认值的函数
1 |
|
道理是一样的
列表、字典、元组
列表、字典、元组等包含元素的复合类型,用简单的 list,dict,tuple 不能够明确说明内部元素的具体类型。
因此要用到 typing
模块提供的复合注解功能:
1 |
|
如果你用的是 Python 3.9+ 版本,甚至连 typing
模块都不需要了,内置的容器类型就支持了复合注解:
1 |
|
在某些情况下,不需要严格区分参数到底是列表还是元组(这种情况还蛮多的)。这时候就可以将它们的特征抽象为更泛化的类型(泛型),比如 Sequence(序列)。
下面是例子:
1 |
|
例子中函数的参数不对容器的类型做具体要求,只要它是个序列(比如列表和元组)就可以。
Any
如果你实在不知道某个类型注解应该怎么写时,这里还有个最后的逃生通道:
1 |
|
任何类型都与 Any
兼容。当然如果你把所有的类型都注解为 Any
将毫无意义,因此 Any
应当尽量少使用。
Python类型注解
http://iamlihua.github.io/2023/03/22/python-lei-xing-zhu-jie/