首页 > 编程语言 > 详细

python-typing&type hint

时间:2021-08-26 09:32:36      阅读:17      评论:0      收藏:0      [点我收藏+]

python是动态语言,不用声明类型

# 不使用类型提示

def func(a,b):
  return a+b

func(‘1‘,‘1‘) # ‘11‘
func(1,1)     # 2
func(‘1‘,1)   # 未使用类型提示,代码编辑时不会报错,代码执行时会报错

# 使用类型提示
from typing import overload

@overload
def func(a: int, b: int): pass

@overload
def func(a: str, b: str): pass

def func(a, b):
    return a + b

func(1, ‘1‘)  # 使用类型提示,在代码编辑时就会报错,可以在代码执行前预防可能出现的问题

type hint

提示类型并不是可用类型,如typing.List并不是list的子类,typing.List只是一个type hint,对a参数指定一个type hint,这个type hint会被设置为func方法a入参的type hint属性,执行代码不会其任何作用,但是执行代码过程中可以获取到这个type hint属性,并使用它做一些处理

常见type hint

  • List是list的泛型(泛型:表示某种类型)
  • Tuple是tuple的泛型
  • NamedTuple是collections.namedtupe的泛型
  • Dict是dict的泛型
  • Mapping是collections.Mapping的泛型
  • Set是set的泛型
  • Sequence是collection.Sequence的泛型/tuple+list的泛型
  • NoReturn是无返回的泛型
  • Any是任意类型的泛型
  • TypeVar,可以创建泛型变量,就是传什么泛型就是什么泛型(T = TypeVar(‘T‘))
  • NewType,一个新的泛型,List=NewType(‘List‘, list)``Person=NewType(‘Person‘, int, int)
  • Callable是可调用类型的泛型
  • Union是联合类型
  • Optional是可为空的联合类型
  • Generator是一个生成器类型

每个实际类型都可以声明一个对应的泛型,可以使用实际了类型做type hint,所以很多时候都是直接用实际类型做typehint

typing.Generic

python-typing&type hint

原文:https://www.cnblogs.com/bonus_scene/p/15187506.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!