python3-类型注解
1、介绍
需求:编程过程中,开发者需要能够快速确认变量的类型,以及ide工具能够确认变量类型,对变量的属性和方法进行提示。
问题:python是弱语言类型,不进行显式的类型声明,当直接赋值确定类型时,开发者和ide工具都能够很好的进行确认类型。
但是当一个变量被动态赋值,比如方法或函数中的形参、对象变量,开发者和ide工具就无法确认。
- 初始为None,赋值实际值
- 变量可能被赋值为多种类型
解决:python在3.5版本的时候引入了类型注解,以方便静态类型检查工具,IDE等第三方工具。
2、使用
- 类型注解既不会改变数据的值,也不会改变数据的类型
- 对于ide来说,类型注解的优先级高于赋值带来的类型
2.1 基本使用
- 可以是变量:变量类型,也可以是变量:变量类型=值
- 可以是在函数或方法的形参中,也可以是代码块中
- Union,表示其中任意一种类型
2.2 返回
def insert(num_1:int) -> int:
def insert(num_1:int) -> [int, str]:
- 在方法或函数声明行的末尾,可以基于->声明返回的类型
- 注意,不支持多个变量返回的注解。可以用list或tuple处理
2.3 容器类型
# 键和值分别为str类型
dict[str, str]
# 元组只有两个元素,第一个为str,第二个为int
tuple[str, int]
# 元组有多个元素,为str或int类型
tuple[Union[str,int],...]
# 元素为str或int类型,有多个元素
list[Union[str,int]]
- tuple、dict、list之后都是[]包围
- tuple可以声明多个,表示依次的元素类型。
- dict可以声明两个,分别表示键和值的类型
- list只能声明一个,表示元素类型
2.4 输出注解信息
def insert(num_1:int) -> int:
return 'abc'
print(insert.__annotations__)
"""
{'num_1': <class 'int'>, 'return': <class 'int'>}
"""
- 注解信息,存储在__annotations__中
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战