柯里化定义:将原来接收2个参数的函数变成新的接受1个参数的函数的过程
柯里化之前:
def add(x,y):
return x+y
add(4,5)
柯里化之后:
def add(x):
def _add(y):
return x+y
return _add
add(4)(5)
运行结果:
9
装饰器:(无参数)
def logger(fn):
def _logger(*args,**kwargs):
print('before')
ret = fn(*args,**kwargs)
print('after')
return ret
return _logger
# logger(add)(4,5)
# add = logger(add)
# add(4,5)
@logger #@logger等价于add = logger(add),此处的add为@的下一行中第一个函数
def add(x,y):
return x+y
add(4,5)
运行结果:
before
after
Out[7]:
9
装饰器:(带参数)
def copy_attributes(src):
def wrapper(dst):
dst.__name__ = src.__name__
dst.__doc__ = src.__doc__
return dst
return wrapper
def logger(fn):
@copy_attributes(fn) #等价