在一些Python的工程项目中,可能会看到类似如下函数参数中的冒号,函数后面跟着的箭头:
def Accumulate(num1: int, num2: int=100) -> int:
sum = num1 + num2
return sum
if __name__ == "__main__":
print(Accumulate.__annotations__)
print(Accumulate(1,2))
print(Accumulate(1))
print(Accumulate('I love ','You'))
对应的输出是:
{'num1': <class 'int'>, 'num2': <class 'int'>, 'return': <class 'int'>}
3
101
I love You
与C++、Java等不同的是不需要显式的定义数据类型,但是这并不意味着python是弱类型的编程语言,恰恰相反python是强类型语言。这就可能会导致在在多人合作开发过程中由于没有显式定义而产生两种不同类型运算的情况,比如:
#因为python是强类型的编程语言,所以不能实现非同类型运算,因此报异常
print(Accumulate('I love'))
Python 在3.5后新加入了以下方式:
函数参数中的冒号是参数的类型建议符,告诉程序员希望传入的实参的类型(这个类型也可以自己定义的类)。
函数后面跟着的箭头是函数返回值的类型建议符,用来说明该函数返回的值是什么类型。
类型建议符并非强制规定和检查,也就是说即使传入的实际参数与建议参数不符,也不会报错。
第一行输出中的__annotations__是函数的保留属性,保存的是函数声明中的注释内容。