您的位置:首页 > 编程语言 > Python开发

python 学习之路(装饰器)

2017-12-17 00:10 465 查看

python 学习之路(装饰器)

装饰器其实也是函数,即装饰其他的函数

原则:

1. 不能修改被装饰的函数的源代码

2. 不能修改被装饰的函数的调用方式

先感受一下装饰器

import time

def b(func):
def c(*args , **kwargs):
start_time = time.time()
func(*args,**kwargs)
end_time = time.time()
print('this is time is %s' %(end_time-start_time))
return c

@b # 装饰器想给哪个函数用,就在这个函数上直接写@+装饰器函数的名字
def a ():
print('start')
time.sleep(2)
print('end.')

a()

# 打印:
# start
# end.
# this is time is 2.001328468322754


可以看出上方的b函数里面嵌套一个c函数

扫盲:

1. 高阶函数:就是参数为函数;

2. 嵌套函数:就是函数里面在定义一个函数;

3. 装饰函数:就是 高阶函数+嵌套函数

看上去很简单,但是还是需要多加练习

import time

# 装饰器
def b(func):
def c(*args , **kwargs): # 传递参数,有则传,没有就不传
start_time = time.time()
func_1 = func(*args,**kwargs) # 有就接收,没有就不接收
end_time = time.time()
print('this is time is %s' %(end_time-start_time))
return func_1 # 将函数返回
return c

@b
def a ():
print('start a')
time.sleep(2)
print('end a')
return '我就是我,不一样的烟火'

@b
def a1(name):
print(name)
print('end a1')

print(a())
a1("dd")


打印:

start a

end a

this is time is 2.000760316848755

我就是我,不一样的烟火

dd

end a1

this is time is 0.0
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: