day11 装饰器

什么是装饰器python

开放封闭原则闭包

软件一旦上线后,就应该遵循开放封闭原则。对修改源代码是粉笔的,对功能的拓展是开放的也就是说咱们必须找到一种解决方案:可以在不修改一个功能源代码以及调用方式的前提下,为其加上新功能app

总结函数

原则以下对象

1.不修改源代码blog

2.不修改调用方式内存

目的class

在1和2元则的基础上拓展新功能import

什么是装饰器基础

装饰器即在不修改被装饰对象源代码与调用方式的前提下,为装饰器对象添加新功能

装饰器与被装饰的对象都可以是任意调用的对象

装饰器=>函数

被装饰的对象=>函数

 

语法糖

被装饰函数的正上方,单独一行
        @deco1
        def foo():
            pass
        foo=deco1()
并且语法糖的前后顺序也会影响代码执行结果

# import time  引入time库#定义了一个闭包函数(最高嵌套3层)
# def timer(func):#   函数内部包含一个函数,且引用函数内部的变量即闭包函数,闭包函数从自身所在名称空间出发寻找变量,找不到就跳出本层找,直到找到内置名称空间
#     def wrapper(*args,**kwargs):#          *args和**kwargs保证了能接收任何参数#     代码块
#         start_time = time.time()
#         res=func(*args,**kwargs)  #调用最原始的index#           上面接收什么,这里就会接收什么
#         stop_time = time.time()
#         print('run time %s' % (stop_time - start_time))
#         return res #这个是干吗的,只知道是返回最原始的index
#     return wrapper #返回的是wrapper函数名对应的内存地址,能够加()直接调用
#
# @timer   #语法糖,至关于index=timer(index)
# def index():
#     time.sleep(一、
#     print('welcome to index page')
#     return 123
# @timer
# def home(name):
#     time.sleep(2)
#     print('welcome %s to index page' %name)
#
# index()
# home('egon')
相关文章
相关标签/搜索