码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2020-02-27 23:31:34      阅读:75      评论:0      收藏:0      [点我收藏+]

标签:函数作用域   str   pytho   参数   closure   对象   name   with   通过   

闭包(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基础(三)闭包与装饰器

标签:函数作用域   str   pytho   参数   closure   对象   name   with   通过   

原文地址:https://www.cnblogs.com/miloli/p/12375078.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!