当前位置: 首页 > 后端技术 > Python

Python-function

时间:2023-03-25 19:28:48 Python

函数执行特定任务完成一段代码的特定功能函数代码的含义复用异常实现细节提高可维护性提高可读性方便调试函数创建调用创建方法def函数名([inputparameters]):functionbody[returnxxx]callmethodfunctionname([actualparameter])exampledefadd(a,b):returna+bres=add(10,20)print(res)#30函数参数传递位置实参根据形参的位置传递,位置对应defadd(a,b):#a,b为形参,在定义处返回a+bres=add(10,20)函数#10,20对于实参,函数调用时print(res)#30关键字实参根据形参的名字传递defadd(a,b):#a,b为形参,在函数定义处返回a+bres=add(b=10,a=20)#10、20为实参,函数调用时print(res)print(res)#30函数调用时将参数转换列表元素转换为位置实参时,使用*将字典元素转换为关键字参数,使用**deffun(a,b,c):print('a=',a,end='\t')print('b=',b,end='\t')print('c=',c,end='\t')lst=[1,2,3]#fun(lst)#错误fun(*lst)#a=1b=2c=3print()dic1={'a':100,'b':200,'c':300}fun(a=10,b=20,c=30)#a=10b=20c=30print()fun(**dic1)#a=100b=200c=300函数调用对参数的影响deffun_demo(a,b):print('arg1:',a)#arg1:11print('arg2:',b)#arg2:[1,2,3]a=100b.append(10)print('arg1:',a)#arg1:100print('arg2:',b)#arg2:[1,2,3,10]n1=11n2=[1,2,3]print('n1:',n1)#n1:11print('n2:',n2)#n2:[1,2,3]fun_demo(n1,n2)print('n1:',n1)#n1:11print('n2:',n2)#n2:[1,2,3,10]可变对象受函数内部修改操作的影响,不可变对象不受函数内部操作的影响。函数参数定义函数定义默认值参数函数定义,为形参设置默认值,当默认值不匹配时才需要传实参。deffun(a,b=10):print(a,b)fun(100)#10010fun(100,200)#100200个位置参数,数量可变定义参数时,无法确定实际传递的位置参数个数计数时,使用可变位置参数。使用*定义可变数量的位置参数结果是一个元组可变数量的位置参数只能有一个deffun1(*args):print(args)fun1(10,20,30)#(10,20,30)fun1(10)#(10,)可变关键字参数在定义参数时,当传递的关键字实际参数个数无法确定时,使用可变关键字参数。使用**定义不定数量的关键字参数结果是一个字典不定数量的关键字参数只能有一个deffun2(**args):print(args)fun2(a=10,b=20,c=30)#{'a':10,'b':20,'c':30}fun2(a=10)#{'a':10}可变数量的位置参数和当关键字可变且存在于同时,位置参数应该放在关键字参数之前。当函数定义强制使用关键字传参时,在形参参数之间加上*,调用函数时后面的参数只能以关键字传参的方式传递。deffun(a,b,*,c,d):print('a=',a,end='\t')print('b=',b,end='\t')print('c=',c,end='\t')print('d=',d,end='\t')fun(a=10,b=20,c=30,d=40)#a=10b=20c=30d=40fun(10,20,c=30,d=40)#a=10b=20c=30d=40#fun(10,20,30,40)#TypeError:fun()接受2个位置参数,但给出了4个函数定义中形式参数的顺序defdemo1(a,b,*,c,d,**args):passdefdemo2(*args,**args2):passdefdemo3(a,b=10,*args,**args2):传递函数的返回值当函数的返回值是多个时,返回结果是一个元组。deffun1(num):odd=[]even=[]foriteminnum:ifitem%2==0:odd.append(item)else:even.append(item)返回奇数,evenarr=[1,2,3,4,5,6]b=fun1(arr)print(b)#([2,4,6],[1,3,5])当函数没有返回值时,return可以省略。当函数的返回值为1时,返回其类型。函数是否需要返回值要视情况而定。