python基础闭包与装饰器

Posted miloli

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python基础闭包与装饰器相关的知识,希望对你有一定的参考价值。

闭包(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)

以上是关于python基础闭包与装饰器的主要内容,如果未能解决你的问题,请参考以下文章

python闭包与装饰器

Python-20_装饰器-01_基础高阶函数闭包

Python基础高阶函数+函数嵌套+闭包 ==装饰器

Python基础闭包函数装饰器

python函数下篇装饰器和闭包,外加作用域

Python基础day-7[闭包,装饰器]