迈向大神之路day009 闭包与装饰器

懂技术 按代码的行数 bug率

不懂 按照执行时间

装饰器

os 操作系统有关

import time

time.sleep()
time.time 1539934795.8942783 多少秒

import time
# def func():
#     time.sleep(0.1)
#     print("大伙好")
#
# def timer():  #计算函数的执行时间
#     start=time.time()
#     func()
#     end=time.time()
#     print(end-start)
# timer()

def timer(f):  #计算函数的执行时间
    start=time.time()
    f()
    end=time.time()
    print(end-start)
def func():
    time.sleep(0.1)
    print("大伙好")
timer(func)


#闭包写法


装饰器的写法

import time
def func():
    time.sleep(0.1)
    print("大伙好")
def timer(f):  #计算函数的执行时间   装饰器函数
    def inner():
        start=time.time()
        f()  #被装饰的函数
        end=time.time()
        print(end-start)
    return inner
func=timer(func)  ===@timmer
func()
#不修改函数调用  但是还想再原来的函数前后添加功能
#timer 就是一个装饰器函数 只是对一个函数  有一些修饰作用

![](C:\Users\q8207\Desktop\2018-10-19_15 闭包代码详解.png)

原则:开发封闭原则

开发:对扩展是开发 封闭 对修改是封闭的

作用 在不改变原函数的调用方式的情况下 在函数的前后添加功能 (不能修改)

装饰器的本质 闭包函数

import time

@timmer  @装饰器的函数名字
def func(): #被装饰器的函数
    time.sleep(0.1)
    print("大伙好")
    
def timer(f):  #计算函数的执行时间   装饰器
    def inner():
        start=time.time()
        f()  #被装饰的函数
        end=time.time()
        print(end-start)
    return inner

func()
#不修改函数调用  但是还想再原来的函数前后添加功能
#timer 就是一个装饰器函数 只是对一个函数  有一些修饰作用

### 装饰带参数的函数

记现象

复习 装饰器

example :

迈向大神之路day009 闭包与装饰器
装饰器

迈向大神之路day009 闭包与装饰器
迈向大神之路day009 闭包与装饰器