先上一段代码:
def add(a:float, b:float)->str:
print('a =',a,'b =',b)
print('a的类型:',type(a),'b的类型:',type(b))
try:
return str(a+b)
except:
print("error")
此处定义了一个j执行加法的函数add,注意其参数定义,python的参数定义和C、C++的参数定义不一样,python的参数定义并不需要指定参数的类型,而C、C++则需要指定参数的类型。但是观看上面的代码时,似乎指定了a、b参数的类型为float类型,并且返回值类型为str,但是其实上面的float和str只是对参数的一种解释,即方便开发过程中函数的调用,实际上,依然没有对参数类型和返回类型做出限制。具体可以看以下示例的执行结果。
# 示例1:
print(add(1.4,1.5))
#示例2:
print(add("",None))
示例1的执行结果为
a = 1.4 b = 1.5
a的类型: <class 'float'> b的类型: <class 'float'>
2.9
示例2的执行结果为
a = b = None
a的类型: <class 'str'> b的类型: <class 'NoneType'>
error
None
可以看到示例1能得到正确的执行结果,而示例2发生了异常,但是程序执行是正确的。
所以可以知道python中定义函数时,对参数类型的声明其实并不指定参数的类型,而是对参数的一种解释,此外下面代码段也是正确的
def add(a:"浮点数", b:"浮点数")->str:
print('a =',a,'b =',b)
print('a的类型:',type(a),'b的类型:',type(b))
try:
return str(a+b)
except:
print("error")
此代码段和一开始代码段的不同之处在于参数类型的声明,可以看到,所谓的参数类型只是对参数的一种解释,并不会检查参数的类型。
同过上面的代码片段可以知道,python中参数类型的声明格式为
参数:变量名+“:”+声明
返回值:位于()之后:之前,用->指明