闭包、装饰器

闭包:

  如果在一个内部函数里,对在外部作用域(但不是在全局作用域)的变量进行引用,那么内部函数就被认为是闭包(closure).

def outer():
     x = 1
     def inner(): #inner()为闭包,引用非本级非全局变量x
         print (x) 
  
     return inner

装饰器:

  本质上是一个函数,该函数用来处理其他函数,它可以让其他函数在不需要修改代码的前提下增加额外的功能,装饰器的返回值也是一个函数对象。它经常用于有切面需求的场景,比如:插入日志、性能测试、事务处理、缓存、权限校验等应用场景。

 1,开放封闭原则:

  • 对扩展是开放的
  •    对修改是封闭的

2,语法糖

  要将语法糖放在被装饰的函数正上方,中间可以空,不建议空。

# 标准版装饰器
def warpper(f):
    def inner(*args,**kwargs):
        print("被装饰函数执行前")
        ret = f(*args,**kwargs)
        print("被装饰函数执行后")
        return ret
    return inner

@warpper
def func(*args,**kwargs):
    print(f"被装饰的{args,kwargs}")
    return "我是func函数"

@warpper
def index(*args,**kwargs):
    print(11111)

print(func(1,2,3,4,5,6,7,8,a=1))

  

 

原文地址:https://www.cnblogs.com/zzzhao/p/11408352.html