首页 Python python:装饰器

python:装饰器

1,time模块import timeprint(time.sleep())#让程序在执行到这个位置到时候停一会print(哈哈哈)获取当前时间import timetime.time()#获取当前时间一个函数的执行时间:def func():start =time.time()print(啊哈哈哈哈哈)time.sleep(0.01)end =time.time()prin

1,time模块

(time.sleep())
()

获取当前时间

一个函数的执行时间:

=(0.01=(end-

装饰器

<span style=”color: #0000ff”>def<span style=”color: #000000″> func():
time.sleep(0.01<span style=”color: #000000″>)
<span style=”color: #0000ff”>print(<span style=”color: #800000″>'<span style=”color: #800000″>老板好<span style=”color: #800000″>'<span style=”color: #000000″>)

<span style=”color: #0000ff”>def timmer(f):<span style=”color: #008000″>#<span style=”color: #008000″>装饰器函数
<span style=”color: #0000ff”>def<span style=”color: #000000″> inner():
start=<span style=”color: #000000″>time.time()
f()<span style=”color: #008000″>#<span style=”color: #008000″>被装饰的函数
end =<span style=”color: #000000″>time.time()
<span style=”color: #0000ff”>print(end-<span style=”color: #000000″>start)
<span style=”color: #0000ff”>return<span style=”color: #000000″> inner
func =<span style=”color: #000000″>timmer(func)
func()

装饰器的作用
#不想修改函数的调用方式,但是还想在原来的函数前后添加功能
#timmer就是一个装饰器函数,只是对一个函数有一些装饰作用。

开放封闭原则
#开放:对拓展是开放的
#封闭:对修改是封闭的

语法糖

(time.time())
time.sleep(10)

<span style=”color: #0000ff”>def timmer(f): <span style=”color: #008000″>#<span style=”color: #008000″>装饰器函数
<span style=”color: #0000ff”>def<span style=”color: #000000″> inner():
start =<span style=”color: #000000″> time.time()
ret = f() <span style=”color: #008000″>#<span style=”color: #008000″>被装饰的函数
end =<span style=”color: #000000″> time.time()
<span style=”color: #0000ff”>print(end -<span style=”color: #000000″> start)
<span style=”color: #0000ff”>return<span style=”color: #000000″> ret
<span style=”color: #0000ff”>return<span style=”color: #000000″> inner

@timmer <span style=”color: #008000″>#<span style=”color: #008000″>语法糖 @装饰器函数名# func = timmer(func)
<span style=”color: #0000ff”>def func(): <span style=”color: #008000″>#<span style=”color: #008000″>被装饰的函数
time.sleep(0.01<span style=”color: #000000″>)
<span style=”color: #0000ff”>print(<span style=”color: #800000″>'<span style=”color: #800000″>老板好同事好大家好<span style=”color: #800000″>'<span style=”color: #000000″>)
<span style=”color: #0000ff”>return <span style=”color: #800000″>'<span style=”color: #800000″>新年好<span style=”color: #800000″>'<span style=”color: #000000″>

ret = func() <span style=”color: #008000″>#<span style=”color: #008000″>inner()
<span style=”color: #0000ff”>print(ret)

装饰带参数函数的装饰器

timmer(f):
inner(*args,**== f(*args,**kwargs)
end =(end -@timmer <span style=”color: #008000″>#<span style=”color: #008000″>语法糖 @装饰器函数名
<span style=”color: #0000ff”>def func(a,b): <span style=”color: #008000″>#<span style=”color: #008000″>被装饰的函数
time.sleep(0.01<span style=”color: #000000″>)
<span style=”color: #0000ff”>print(<span style=”color: #800000″>'<span style=”color: #800000″>老板好同事好大家好<span style=”color: #800000″>'<span style=”color: #000000″>,a,b)
<span style=”color: #0000ff”>return <span style=”color: #800000″>'<span style=”color: #800000″>新年好<span style=”color: #800000″>'<span style=”color: #000000″>
ret = func(1) <span style=”color: #008000″>#<span style=”color: #008000″>inner()
<span style=”color: #0000ff”>print(ret)

装饰器函数格式:

wrapper(f):
inner(*args,**= f(*args,**kwargs)

@wrapper <span style=”color: #008000″>#<span style=”color: #008000″>语法糖 @装饰器函数名
<span style=”color: #0000ff”>def func(a,b)
<span style=”color: #0000ff”>return <span style=”color: #800000″>'<span style=”color: #800000″>新年好<span style=”color: #800000″>’

本文来自网络,不代表青岛站长网立场。转载请注明出处: https://www.0532zz.com/html/kaifa/python/20200729/7327.html
上一篇
下一篇

作者: dawei

【声明】:青岛站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

为您推荐

返回顶部