返回函数和装饰器
函数作为返回值
- python 调用高阶函数返回其内部一个函数时,会保存高阶函数中的参数,这种称为‘闭包’的结构具有很大的威力
def lazy_sum(*args):
def sum():
ax = 0
for i in args:
ax = ax + i
return ax
return sum
f = lazy_sum(1,2,3,4,5)
f()
15
#而且每次调用都会返回一个新的函数,即使传入参数相同
f1 = lazy_sum(1,2,3)
f2 = lazy_sum(1,2,3)
f1==f2
False
装饰器
def log(func):
def wrapper(*args, **kw):
print('call %s()' % func.__name__)
return func()
return wrapper
@log
def now():
print('2017/08/13')
now()
call now()
2017/08/13
def log1(func):
print('call %s()' %func.__name__)
return func
@log1
def now1():
print('2017/08/13')
now1()
call now1()
2017/08/13