def decorate_function(original_function):
def wrapper_function(*args,**kwargs):
print('original_function name is {}'.format(original_function.__name__))
return original_function(*args,**kwargs)
return wrapper_function
class decorate_class(object):
def __init__(self,original_function):
self.original_function = original_function
def __call__(self, *args, **kwargs):
print('original_function name is {}'.format(self.original_function.__name__))
return self.original_function(*args, **kwargs)
# @decorate_function
@decorate_class
def display():
print('original_function ran')
# @decorate_function
@decorate_class
def display_info(name,age):
print('display的参数为({},{})'.format(name,age))
# 未用注解时
# function1 = decorate_function(original_function)
# function1()
# display_info('lisi',25)
display()
通过装饰模式来包裹被装饰的函数,在这个函数开始或结束,运行装饰函数。可以起到增强函数或者说方法的作用,java的动态代理异曲同工。