Python函数的参数注解
-
函数定义的弊端:
-
python是动态语言,变量随时可以被赋值,且能赋值为不同的类型;
-
python不是静态编译语言,变量类型是在运行器决定的;
-
动态语言很灵活,但是这种特性也是弊端;
-
def add(x, y):
return x + y
print(add(4, 5))
print(add('hello', 'world'))
add(4, 'hello')#
难发现:由于不做任何类型检查,直到运行期间问题才显现出来,或者线上运行时才能暴露出问题;
难使用:函数的使用者看到函数的时候,并不知道你的函数的设计,并不知道应该传入什么类型的数据;
如何解决这种动态语言定义的弊端呢?
增加文档Documentation String
这只是一个惯例,不是强制标准,不能要求程序员一定为函数提供说明文档;
函数定义更新了,文档未必同步更新;
def add(x, y):
'''
:param x: int
:param y: int
:return: int
'''
return x + y
print(help(add))
那有没有别的方法呢?
函数注解Function Annotations
def add(x: int, y: int) -> int:
'''
:param x: int
:param y: int
:return: int
'''
return x + y
print(help(add))
print(add('hello', 'world')) ###思考一下这里会报错吗?
Python 3.5引入
对函数的参数进行类型注解;
对函数的返回值进行类型注解;
只对函数参数做一个辅助的说明,并不对函数参数进行类型检查;