• Python中的闭包和装饰器


    1.闭包

    专业解释:闭包(Closure)是词法闭包(Lexical Closure)的简称,是引用了自由变量的函数。这个被引用的自由变量将和这个函数一同存在,即使已经离开了创造它的环境也不例外。所以,有另一种说法认为闭包是由函数和与其相关的引用环境组合而成的实体。

    通俗解释:简单说,闭包就是根据不同的配置信息得到不同的结果

    例子:

    def make_adder(addend):
        def adder(augend):
            return augend + addend
        return adder
    
    p = make_adder(23)
    q = make_adder(44)
    
    print p(100)
    print q(100)

    执行结果:

    123
    144

    2.装饰器

    概念:对函数(参数,返回值等)进行加工处理,生成一个功能增强版的一个函数。

    例子:

    def log(text):
        def decorator(func):
            def wrapper(*args, **kw):
                print '%s %s():' % (text, func.__name__)
                return func(*args, **kw)
            return wrapper
        return decorator
    
    @log('execute')
    def now():
        print '2013-12-25'

    执行结果:

    >>> now()
    execute now():
    2013-12-25

    两者关系:

    装饰器就是一种闭包

    装饰器的参数是一个函数或类,专门对类或函数进行加工处理

  • 相关阅读:
    Kibana 基本操作
    kibana安装
    es7.2版本安装ik分词
    Elastic Search闪退问题
    Elastic Search安装-windows
    1-ES简单介绍
    vue项目1-pizza点餐系统12-设计购物车
    vue项目1-pizza点餐系统11-设计menu页面
    前端:table、thead、th、tr、td
    某二分图匹配题的题解
  • 原文地址:https://www.cnblogs.com/bbbbbd/p/7717916.html
Copyright © 2020-2023  润新知