特点:代码复用、可扩展、保持一致性
函数简单的实现,返回值的不同:
1 #定义方法 2 def funx1(): 3 pass 4 5 funx2(): 6 return 0 7 8 funx3(): 9 return 11,12,[33,88],{"xx":99} 10 11 funx411(): 12 return (------funx411111111------") 13 14 15 funx4(): 16 funx411 17 18 调用方法1 19 返回:None 20 print(funx1()) 21 22 调用方法2 23 返回:0 24 (funx2()) 25 26 调用方法3 27 返回元组:(11,{'xx': 99}) 28 (funx3()) 29 30 调用方法4 31 返回函数地址,加括号就可运行 32 funx40=funx4(); 33 输出:------funx411111111------ 34 print(funx40())
函数简单的实现,形参的不同:
funx1(x,y): 2 print(x=%s,y=%s"%(x,y)) 3 4 默认参数 def funx2(x2,y2=10): " % (x2,y2)) *args可接收多个不固定位置参数,转换为元组 9 def funx3(x1,y1,*args): 10 print(x1) 输出11 11 print(y1) 输出13 print(len(args)) 输出个数,2 13 print(args) 输出全部值,以元组方式,(19,18) *kwargs可接收多个不固定关键字参数,转换为字典 16 def funx4(**kwargs): 17 (kwargs) 18 与形参一一对应 20 funx1(11,2221 与形参位置无关 22 funx1(y=88,x=99默认值可以不传递值 24 funx2(11025 funx3(11,13,19,1826 funx4(user=dong",name=dongxiaodong递归函数:递归函数 funx1(intx): intx-=1 (intx) if intx >0: funx1(intx) 再次调用自己 funx1(10)高阶函数:
函数作为参数进行传递
addx(x,y,funx): return funx(x)+funx(y) res=addx(-5,1,abs) abs的绝对值运算函数 print(res) 输出:6函数装饰器:
本质是函数,用来装饰其他函数(给其他函数添加功能)
注意:
1、不可修改被装饰函数源代码
2、不可更改被装饰函数的调用方式
import time 2 3 装饰器 def decofun(func): decofun(funx1) 5 def deco(*args,**kwargs):可支持多个位置参数和关键字参数传递 6 starttime=time.time()获的开始取时间戳 7 func(*args,**kwargs) 运行函数 8 stoptime=time.time() 9 函数运算时间为:%f"%(stoptime-starttime)) 10 return deco 返回函数地址 11 12 @decofun 相当于:funx1=decofun(funx1) 13 14 time.sleep(115 ----funx1----16 17 @decofun 相当于:funx2=decofun(funx2) funx2(x,1)">19 print(x,---funx2---,y) 20 funx1=decofun(funx1) 22 funx1() 调用函数 23 funx2(y=12,x=16)调用函数