Python/Decorator: Difference between revisions
< Python
Jump to navigation
Jump to search
No edit summary |
No edit summary |
||
| Line 33: | Line 33: | ||
return sum | return sum | ||
return wrapper | return wrapper | ||
</source> | |||
|- | |||
| | |||
| | |||
<source lang="python">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 | |||
</source> | </source> | ||
|} | |} | ||
Revision as of 08:04, 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
|