python之闭包

1.   变量解析规则

# 变量名加载顺序  内置》全局》局部

# 变量名搜索顺序  局部》全局》内置

2.  闭包函数的定义

函数内部定义的函数称为内部函数,该内部函数包含对外部(上层)作用域,而不是对全局作用域名字的,并且外层函数返回了内层函数的引用,那么该内部函数称为闭包函数

闭包函数属性:

  *闭包函数是内部函数

  * 包含对外部作用域而非全局作用域的引用

3.   闭包的优缺点

优点:闭包优化了变量,原来需要类对象完成的工作,闭包也可以完成

缺点:由于闭包引用了外部函数的局部变量,则外部函数的局部变量没有及时释放,消耗内存

4.   通用闭包

# 通用闭包
def set_func(func):
    def call_func(*args, **kwargs):
        print("要增加的功能代码")
        return func(*args, **kwargs)  # 作为实参传入时,需要拆包
    return call_func # 返回内层函数的引用

@set_func #等价于 test = set_func(test)
def test():
    print("为这个函数增加功能")

  

posted @ 2018-08-14 18:45  三叶草body  阅读(228)  评论(0)    收藏  举报