Python/Decorator: Difference between revisions
< Python
Jump to navigation
Jump to search
No edit summary |
No edit summary |
||
| Line 37: | Line 37: | ||
| | | | ||
| | | | ||
<source lang="python">def mydeco(func=None, name='default'): | <source lang="python"> | ||
def mydeco(func=None, name='default'): | |||
state = { | state = { | ||
'begin': 0 | 'begin': 0 | ||
| Line 65: | Line 66: | ||
return deco_wrapper if func is None else func_wrapper | return deco_wrapper if func is None else func_wrapper | ||
@mydeco | |||
def test1(): | |||
time.sleep(3) | |||
@mydeco(name="noname") | |||
def test2(): | |||
time.sleep(1) | |||
</source> | </source> | ||
|} | |} | ||
Revision as of 08:06, 13 June 2019
| TODO | Code |
|---|---|
def pre_hook(func):
def wrapper(*args):
a = args[0] + 1
b = args[1] + 1
return func(a, b)
return wrapper
| |
def post_hook(func):
def wrapper(*args):
print(func(*args))
return wrapper
| |
def duo_hook(func):
def wrapper(*args):
a = args[0] + 1
b = args[1] + 1
sum = func(a, b)
print(sum)
return sum
return wrapper
| |
def mydeco(func=None, name='default'):
state = {
'begin': 0
}
def pre_task():
state['begin'] = time.time()
print('name=%s' % name)
def post_task():
elapsed = time.time() - state['begin']
print('elapsed=%.2f' % elapsed)
def func_wrapper(*args):
pre_task()
fret = func(*args)
post_task()
return fret
def deco_wrapper(func):
def func_wrapper(*args):
pre_task()
fret = func(*args)
post_task()
return fret
return func_wrapper
return deco_wrapper if func is None else func_wrapper
@mydeco
def test1():
time.sleep(3)
@mydeco(name="noname")
def test2():
time.sleep(1)
|