其实函数参数中的冒号是参数的类型建议符,告诉程序员希望传入的实参的类型。函数后面跟着的箭头是函数返回值的类型建议符,用来说明该函数返回的值是什么类型。
值得注意的是,类型建议符并非强制规定和检查,也就是说即使传入的实际参数与建议参数不符,也不会报错,但会有警告。
举例说明:
def twoSum(num1: int, num2: int=100) -> int:
sum = num1 + num2
return sum
if __name__ == "__main__":
print(twoSum.__annotations__)
print(twoSum(1,2))
print(twoSum(1))
print(twoSum('I love ','Arsenal'))
#print(twoSum('Arsenal'))
#output:
{'num1': <class 'int'>, 'num2': <class 'int'>, 'return': <class 'int'>}
3
101
I love Arsenal
几点解释:
这里的 "-> int" 指示了 twoSum() 函数的返回类型是 int
第一行输出中的__annotations__是函数的保留属性,保存的是函数声明中的注释内容,比如我们使用的对参数"num1","num2"和返回值的建议类型。
第二行输出是正常用法。
第三行输出验证了:注释内容后可以跟等号"=",意思为未传入实参时,该参数获得的默认值
第四行输出则验证了该解释说明符并非强制检查,我们传入了两个str实参,并不会报错,而是继续进行函数中的加法运算。如果传入的两个实参无法进行函数中规定的运算,则会正常报错。
注意:num2中:int=100,为默认值赋值或'int>0'=100也可