当前位置: 首页 > 后端技术 > Python

蟒蛇泛型?看完这篇文章就够了

时间:2023-03-26 13:47:47 Python

前言网上关于python泛型的介绍太少了,都是浅尝辄止。我必须更先进,更完美。首先,python是一种强类型的动态语言。一般来说,动态类型是不需要泛型的,因为泛型就是让类型动起来,那么我们这里所说的“python泛型”是什么意思呢?这很简单。Python有打字提示。如果你不写typinghints,也不介意ide给你的typehints都是Any,你就不用关注“泛型”了。但是在2022年,一个优秀的python开发人员将编写所有带有键入提示的python代码,因此学习和掌握泛型迫在眉睫。第一个例子——关联函数的输入参数和返回值的类型有这样一个函数funcfunction:参数值的类型是int或float:如果值的类型是int,则返回int的类型;如果值的类型是float,则返回float类型。那么,有这样的要求,你会如何实现呢?可以这样想:deffunc(value:int|float)->int|float:returnvalue但是这个有一个很大的问题。这个函数的意思是:参数值的类型是int或者float,返回值是int或者float。不能描述“如果值的类型是int,则返回int类型;如果值的类型是float,则返回float类型”比如我输入的参数是1,是一个int,希望返回值结果也是一个int,我应该怎么做而不是“int|float”?泛型可以解决这个问题:fromtypingimportTypeVarT=TypeVar('T')deffunc(value:T)->T:returnvalueresult=func(1)如果输入值是int类型,那么结果就是int如果是输入值为float类型,则结果为float