Python向函数添加类型
示例
让我们以一个函数的示例为例,该函数接收两个参数并返回一个表示它们之和的值:
def two_sum(a, b): return a + b
通过查看此代码,您无法安全无疑地指示function参数的类型two_sum。当提供int值时,它都可以工作:
print(two_sum(2, 1)) #结果:3
和字符串:
print(two_sum("a", "b")) # result: "ab"
以及其他值,例如lists,tuples等。
由于python类型的动态特性,其中许多类型适用于给定操作,因此任何类型检查器都无法合理地断言是否应允许对此函数的调用。
为了帮助我们的类型检查器,我们现在可以在功能定义中为其提供类型提示,以指示允许的类型。
为了表明我们只希望允许int类型,我们可以将函数定义更改为:
def two_sum(a: int, b: int): return a + b
注释后跟参数名称,并用:字符分隔。
同样,为了表明只str允许类型,我们将更改函数以指定它:
def two_sum(a: str, b: str): return a + b
除了指定参数的类型外,还可以指示函数调用的返回值。这是通过->在参数列表的右括号后但在:函数声明末尾之前在字符后添加字符和类型来实现的:
def two_sum(a: int, b: int) -> int: return a + b
现在我们已经指出,调用时的返回值two_sum应为typeint。同样,我们可以定义适当的值str,float,list,set等。
尽管类型提示通常由类型检查器和IDE使用,但是有时您可能需要检索它们。这可以使用__annotations__特殊属性来完成:
two_sum.__annotations__ # {'a': <class 'int'>, 'b': <class 'int'>, 'return': <class 'int'>}