闭包函数
就是将原先需要调用好几遍的函数和参数写入一个包内,下次调用时一起调用
def name(x): x=1 def age(): print(x) return age f=name(1) f() f()
装饰器
装饰器可以用来装饰原函数,它可以给原函数添加功能
装饰器有两个原则:
1.不改变原函数的调用方式
2.不改变原函数的源代码
#双层装饰器的模板 def outter(func): def wrapper(*args,**kwargs):#wrapper是将要运作的函数 #加功能 res=func(*args,**keargs)#被装饰的函数 return res retyrn wrapper @outter#语法糖 def shopping():#原函数 print('shopping') shopping() #调用函数 #三层装饰器的模板 def sanceng(engine): def outter(func): def wrapper(*args,**kwargs):#wrapper是将要运作的函数 print(engine) res=func(*args,**kwargs)#被装饰得函数 return res return wrapper return outter @sanceng(3)#语法糖 def shopping():#原函数 print('shopping') shopping()#调用函数
迭代器
- 把可迭代对象/迭代器对象用__iter__方法转换成迭代器对象
- 使用__next__取出迭代器里的所有值
- 使用__next__方法取尽迭代器中的所有值,一定会报错,通过异常捕捉退出while循环
解决了不依赖索引取值