# -*- coding: UTF-8 -*- def outer(flag): def wrapper(func): def inner(*args,**kwargs): if flag: print('before') result = func(*args,**kwargs) print('agter') else: r = func(*args,**kwargs) return result return inner return wrapper def do_something(arg): def wrapper(): print('#' * 22) arg() print('#' * 22) return wrapper def decorator(func): def wrapper(): print('*' * 19) func() print('*' * 19) return wrapper do_something(decorator) @do_something # inner = do_somethinf(decorator(inner)) @decorator def inner(): print('xdc') print('xdc.ink') inner()