一、什么是函数
函数是组织好的、可重复使用的、用来实现一定功能的代码段。
函数设计遵循单一职责原则,提倡一个函数只完成单一一个功能,降低程序的藕合性,提高可维护性。
二、函数定义
def 函数名( 参数列表): "函数_文档字符串" 函数体 return [表达式]#可选,没有这行相当于返回None。
三、函数调用
函数名()#有参数的在括号里加上参数
四、函数参数的传递
1.基本参数的使用
def vs(a,b,c):#根据长宽高,求长方体体积 s=a*b*c; print("area=%.2f" %s)vs(5,4,2)
传递的参数与定义的参数一一对应
2.默认参数的使用
def vs(a,b,c=2):
调用时vs(5,4),c参数可以省略,用默认值代替,等同vs(5,4,2)。当然也可以不理会,传三个参数进去。
带默认值的参数不能位于不带默认值的前面。如下定义就是错误的。
def vs(a,b=4,c):
3. 不定参数的使用
这是python语言特有的功能,显示了其功能的强大。
def 函数名([formal_args,] *var_args_tuple, **var_args_dict): "函数_文档字符串" 函数体 return [表达式]#可选,没有这行相当于返回None。
formal_args为传统定义的参数,*var_args_tuple, **var_args_dict为不定长参数。函数传入时优先匹配传统参数,没有过多的参数匹配不定长参数,则不定义参数显示为空。如下例:
def test(a,b,*args,**dictArgs): print(a) print(b) print(args) print(dictArgs)test(11,22)
结果:
1122(){}
如果传入参数多于传统参数,则分如下两种情况:
(1) 参数没有指定名称,以元组的形式存入var_args_tuple。
(2) 参数指定名称,以dict的形式存入var_args_dict
def test(a,b,*args,**dictArgs): print(a) print(b) print(args) print(dictArgs)test(11,22,33,44,kk=55,kt=66)
结果:
1122(33, 44){'kk': 55, 'kt': 66}
同样的,指定名称的参数不能在没有指定名称的参数前面。如下调用是错误的。
test(11,22,33,44,kk=55,kt=66,77)
五、函数返回值
使用return返回值,如果没有return相当于返回None。