ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python-typing&type hint

2021-08-26 01:04:12  阅读:193  来源: 互联网

标签:hint python 类型 func typing 泛型 type


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

标签:hint,python,类型,func,typing,泛型,type
来源: https://www.cnblogs.com/bonus_scene/p/15187506.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有