python基础(三)闭包与装饰器

sunny0 2020-02-27

闭包(closure): 内嵌函数通过调用外部嵌套函数作用域内的变量,则这个内嵌函数就是闭包.

闭包必须满足三个条件:

  • 必须有一个内嵌函数
  • 内嵌函数必须引用外部嵌套函数中的变量
  • 外部函数的返回值必须是内嵌函数
eg:
def make_power(y):
    def fn(x):
        return x ** y
    return fn
    
pow = make_power(2)
print pow(5) #25  
#声明pow时返回了函数fn并将2作为嵌套函数的参数传入
#闭包内嵌套函数传递参数时,参数保留

装饰器(decorators):是一个函数,主要作用为包装一个函数或类.包装的目的是在不改变函数名的情况下改变被包装对象的行为

eg:
def priv_check(fn):
    def fx(name,x):
        print ('权限校验')
        fn(name,x)
    return fx

@priv_check    
def save_money(name,x):
    print('存钱')
    
@priv_check
def withdraw(name,x):
    print('取钱')
    
save_money('tiny',100)
withdrwa('tim',50)

相关推荐