这样为什么不可以
def calc_prod(lst):
def f(x,y):
return x*y
return reduce(f,lst,1)
f = calc_prod([1, 2, 3, 4])
print f()
def calc_prod(lst):
def f(x,y):
return x*y
return reduce(f,lst,1)
f = calc_prod([1, 2, 3, 4])
print f()
2016-10-16
def calc_prod(lst): def f(x,y): return x*y return reduce(f,lst,1) f = calc_prod([1, 2, 3, 4]) print type(f) print f()
f = calc_prod([1, 2, 3, 4]) 输出的是 int类型的 ,print f就能显示正常结果
def calc_prod(lst): def lazy_prod(): def f(x,y): return x*y return reduce(f,lst,1) return lazy_prod f = calc_prod([1, 2, 3, 4]) # 这个是一个function类型的, 所以要加一个括号 print f() print type(f) print f()
def lazy_prod(): def f(x,y): return x*y return reduce(f,lst,1) return lazy_prod #这么写才是一个闭包
举报