文章目录
1 python类型注解
类型注解,即对变量的类型,进行标注或者说明,因为Python是一门动态编译型语言,我们无法在赋值时就定义它的变量类型,所以在Python3.5
以上版本新增了类型注解,但仅仅是提示作用,并不能严格控制,这是动态编译型语言的通病,下面来仔细看一下什么是Python的类型注解。
2 函数定义的弊端
Python是动态语言,变量随时可以被赋值,且赋值为不同的类型,这就与静态语言不同了,变量的类型是在运行期决定的,而静态语言事先就已经定义好了变量的类型了。这是动态语言方便之处,但也是一种弊端,我们无法控制变量的类型,也就无法控制异常的产生。举个栗子
def add(x,y):
return x + y
print(add(1,2))
print(add('s','b'))
print(add(1,'a'))
当用户传入两个数字时,返回它们的和,但是如果我们传递其他变量呢?比如字符串,因为Python中实现了+号的类型重载,所以说两个字符串的确可以加,但是如果是数字和字符串呢?在Python这种强类型语言中来说,属于非法操作(javascript会隐式转换),而这时,我们就需要对用户传入的数据进行类型判断,不符合本函数的需求,那么就抛个异常,或者提示等等操作,这样就不会引起后续代码在执行期崩溃。如何解决呢?其实主要有两种方式。
- 函数文档
- 函数注解
3 函数文档
在函数中插入说明性文档的方式成为函数文档。
def add(x, y):
"""
This function used to add something
:param x: int object
:param y: int object
:return: int object
"""
return x + y
在函数中,一般是定义语句后的首行使用三对双引号表示。通常存储在函数的__doc__属性中。当用户使用help(函数)时,会被打印在屏幕上。
In [68]: def add(x, y):
...: """
...: This function used to add something
...: :param x: int object
...: :param y: int object
...: :return: int object
...: """
...: return x + y
...:
In [69]: help(add)
Help on function add in module __main__:
add(x, y)
This function used to add something
:param x: int object