zoukankan      html  css  js  c++  java
  • 《python-闭包与修饰器》

    1.闭包

    闭包:如果在一个内部函数里,对在外部作用域(但不是在全局作用域)的变量进行引用,那么内部函数就被认为是闭包(closure)。

    在Python中创建一个闭包可以归结为以下三点:

    • 闭包函数必须有内嵌函数
    • 内嵌函数需要引用该嵌套函数上一级namespace中的变量
    • 闭包函数必须返回内嵌函数
    1 def fun(x):
    2     def add(y):
    3         return x+y
    4     return add
    5 d=  fun(2)
    6 print(d(1)) # 3
    7 print(d(3)) # 5

    2.装饰器

    • 装饰器本身是一个函数,用于装饰其它函数,增强被装饰函数的功能,装饰器一般接受一个函数对象作为参数,已对其进行增强。
    • 装饰器是一个很著名的设计模式,经常被用于有切面需求的场景,较为经典的有插入日志、性能测试、事务处理等。装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量函数中与函数功能本身无关的雷同代码并继续重用。概括的讲,装饰器的作用就是为已经存在的对象添加额外的功能。
    import time  
    def timeit(func):  
        # 定义一个计时器,传入一个,并返回另一个附加了计时功能的方法 
        def wrapper(): 
            # 定义一个内嵌的包装函数,给传入的函数加上计时功能的包装
            start = time.clock()  
            func()  
            end =time.clock()  
            print("time %.4f"%(end-start))
    
        # 将包装后的函数返回  
        return wrapper  
     
    @timeit  
    def fun(): 
        for i in range(10000):pass
        print("this test fun!")   
    
    fun()
    # --------------------------------------------------
    # this test fun!
    # time 0.0009
  • 相关阅读:
    今天学习的数组不是很懂
    今天的复习内容
    这是今天的作业
    总结,错误反思
    php 文件读取
    call_user_func函数
    plsql中调试函数 转
    oracle数据库中函数的递归调用
    关闭PdfReader右侧工具栏的方法
    Dev TreeList基本用法
  • 原文地址:https://www.cnblogs.com/boye169/p/13456024.html
Copyright © 2011-2022 走看看