Python之浅谈装饰器

闭包函数

就是将原先需要调用好几遍的函数和参数写入一个包内,下次调用时一起调用

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()#调用函数

迭代器

  1. 把可迭代对象/迭代器对象用__iter__方法转换成迭代器对象
  2. 使用__next__取出迭代器里的所有值
  3. 使用__next__方法取尽迭代器中的所有值,一定会报错,通过异常捕捉退出while循环
    解决了不依赖索引取值
原文地址:https://www.cnblogs.com/MrYang161/p/11342530.html