python 装饰器 part1
python 装饰器
早就应该掌握的技能。。。。装饰器:本质是函数,用来装饰其他的函数,给他们附加功能。
实现装饰器要素:
- 函数既‘变量’,以操作变量的形式操作函数;
- 高阶函数和嵌套函数的使用;
函数既‘变量’
代码举例:
import time def func(f): ''' 将函数以变量的形式传递进来 ''' start = time.time() f() end = time.time() print('函数f(也就是test)的运行时间是:{}'.format(end-start)) print('in func....') return f def test(): time.sleep(2) print('in test.....') val = func(test) # val == test val() # test() # 以上实现了一个特别native的装饰器功能, # 在func内部可以增加其他功能(例如计算函数运行时间),最后return f
嵌套函数
进一步改进:
import time def decorator(func): def process(): start = time.time() func() end = time.time() print('函数func(也就是被装饰的函数)的运行时间是:{}'.format(end-start)) return process def decorated(): time.sleep() print('decorated function') decorated = decorator(decorated) # decorated = return 来的process decorated() # 也就是调用process
最终版:
import time def decorator(func): def process(): start = time.time() func() end = time.time() print('函数func(也就是被装饰的函数)的运行时间是:{}'.format(end-start)) return process @decorator # python 装饰器的正确使用 def decorated(): time.sleep() print('decorated function') # 此时不用再像上面一样赋值,可以直接调用 decorated()
相关推荐
夜斗不是神 2020-11-17
huavhuahua 2020-11-20
Yasin 2020-11-16
xiaoseyihe 2020-11-16
千锋 2020-11-15
diyanpython 2020-11-12
chunjiekid 2020-11-10
wordmhg 2020-11-06
YENCSDN 2020-11-17
lsjweiyi 2020-11-17
houmenghu 2020-11-17
Erick 2020-11-17
HeyShHeyou 2020-11-17
以梦为马不负韶华 2020-10-20
lhtzbj 2020-11-17
pythonjw 2020-11-17
dingwun 2020-11-16
lhxxhl 2020-11-16