python 装饰器
2019-02-28 22:12
58 查看
1. 闭包函数概念:
函数内部定义的函数;引用了外部变量但非全局变量。
#示例 def count(): a = 1 b = 1 def sum(): c = 1 return a + c # a - 自由变量 return sum
2. 高阶函数:
函数参数是一个函数,返回一个函数名函数参数是一个函数,返回一个函数名
def func1(x,y): s=x+y return s def func2(func): return 2*func f1=func1(3,4) f2=func2(f1) print(f2) #输出: 14
3. 装饰器:
装饰器的属性:
实质: 是一个函数
参数:是你要装饰的函数名(并非函数调用)
返回:是装饰完的函数名(也非函数调用)
作用:为已经存在的对象添加额外的功能
特点:不需要对对象做任何的代码上的变动,函数调用方式不被修改
即:在不改变原函数代码和调用方式的基础上,添加新的功能
实例:利用装饰器为函数增加计时功能
#利用装饰器为函数增加计时功能 import time #新建一个装饰器decorator,func为待装饰的函数 def decorator(func): def newfunc():#定义装饰函数 print('此处添加执行func之前的功能,例如:') print('func函数开始执行时间:',time.ctime()) func() print('此处添加执行func之后的功能') print('func函数结束执行时间:',time.ctime()) return newfunc #返回装饰函数 def myfunc(): print('这是需要被装饰的函数') time.sleep(3) print('装饰前') myfunc() print('') print('装饰中....') myfunc=decorator(myfunc) print('') print('装饰后') myfunc() #输出: 装饰前 这是需要被装饰的函数 装饰中.... 装饰后 此处添加执行func之前的功能,例如: func函数开始执行时间: Thu Feb 28 22:05:48 2019 这是需要被装饰的函数 此处添加执行func之后的功能 func函数结束执行时间: Thu Feb 28 22:05:51 2019
装饰器语法糖:
在需要被装饰的函数上加@decorator_name,可以省略调用decorator 和newfunc函数,直接调用func函数计划科获得被装饰后的函数
#利用装饰器为函数增加计时功能 import time #新建一个装饰器decorator,func为待装饰的函数 def decorator(func): def newfunc():#定义装饰函数 print('此处添加执行func之前的功能,例如:') print('func函数开始执行时间:',time.ctime()) func() print('此处添加执行func之后的功能') print('func函数结束执行时间:',time.ctime()) return newfunc #返回装饰函数 @decorator def myfunc(): print('这是需要被装饰的函数') time.sleep(3) myfunc() #输出 此处添加执行func之前的功能,例如: func函数开始执行时间: Thu Feb 28 22:09:57 2019 这是需要被装饰的函数 此处添加执行func之后的功能 func函数结束执行时间: Thu Feb 28 22:10:00 2019
相关文章推荐
- python中函数总结之装饰器闭包详解
- Python 装饰器总结
- python-day13--装饰器
- 【Python】学习笔记——-5.4、装饰器
- python 函数结果缓存一段时间的装饰器
- Python装饰器语法糖
- python 装饰器从放弃到玩转(高级)
- [Python]装饰器
- Python之装饰器
- 如何理解python的装饰器:读《简单 12 步理解 Python 装饰器》笔记
- python: 从函数了解到装饰器
- Python学习之路6 - 装饰器
- python 笔记 装饰器
- Python学习--装饰器
- python 装饰器学习
- python基础 lambda 冒泡 闭包和装饰
- Python设计模式之装饰模式实例详解
- python3之装饰器
- python 装饰器
- 8、python设计模式之装饰模式