以下代码为什么不行呢
def calc_prod(lst):
def a(x,y):
return x*y
def lazy_prod():
return reduce(a,lst)
reduce lazy_prod
f = calc_prod([1, 2, 3, 4])
print f()
def calc_prod(lst):
def a(x,y):
return x*y
def lazy_prod():
return reduce(a,lst)
reduce lazy_prod
f = calc_prod([1, 2, 3, 4])
print f()
2018-07-31
你上面的是可以的,就一个关键字写错了而已.
def calc_prod(lst):
def a(x,y):
return x*y ##这种分离出来还更好,逻辑更清晰.
def lazy_prod():
return reduce(a,lst)
reduce lazy_prod ##这一句的前面写错了,应该是return就可以了
f = calc_prod([1, 2, 3, 4])
print f()
#######################################
下面是我写的,在Python3.x版本运行的结果.
from functools import reduce def cheng_ji(x,y): ##直接分离在这里,以备调用 return x*y def calc_prod(lst): def inner(): #这里闭包 return reduce(cheng_ji,lst) #这里调用,并返回给闭包 return inner #这里把闭包返回去 f = calc_prod([1, 2, 3, 4]) print (f())
举报