首先看一下C语言的自定义函数,如下:
C语言
int func(int a)
...
return 0
非常明显,函数定义的第一行就可以知道,自定义函数func,输入了一个int型参数,返回了一个int结果。在调用该函数时,如果没有按照要求输入一个int参数,程序就会报错。
再来看一下Python的自定义函数,如下:
Python
def func(x):
...
return 0
从函数定义中能看出什么?只能看出这个自定义函数有一个参数,这个参数是什么类型,这个函数的返回值是什么都不清楚。因此,在Python3.5后,引入了函数参数与返回值的注解。以两数求和为例,如下:
Python3
def func(x: int, y: int) -> int:
'''return type int, return x add y '''
return x+y
为函数的参数和返回值都加上了注释,x: int , y: int 说明了输入的两个参数都是int。 -> int 说明返回值也是int。再加上函数注释return type int, return x add y,清楚的说明了这个函数的作用。
这样看起来就直观多了。但是还有个问题,虽然函数参数和返回值是这么注释的,但在使用该函数时没有按照注释要求输入会怎样呢?如下:
add("aa", "bb")
返回结果
"aabb"
没有抛出异常。那注释与否又有什么用呢?不可能就是起个提示作用吧。这就要说到Python3中的标准库inspect……