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__中
posted @ 2023-05-19 13:06  挖洞404  阅读(54)  评论(0编辑  收藏  举报