1、函数作为返回值:
求和函数:
def calc_sum(*args):
ax = 0
for n in args:
ax = ax +n
return ax
但不想立刻返回,可以这样写:
def lazy_sum(*args):
def sum():
ax = 0
for n in args:
ax = ax +n
return ax
return sum
当调用lazy_sum时,返回的不是结果,而是求和函数。
闭包:
def count():
def f(j):
def g():
return j*j
return g
fs = []
for i in range(1,4):
fs.append(fi)
return fs
使用闭包时,返回函数不要引用任何循环变量,或者后续会发生变化的变量。