錯(cuò)過(guò)了年華
2017-12-25 22:46:30
def?calc_prod(lst):
????def?lazy_prod():????#1
????????def?f(x,?y):
????????????return?x?*?y
????????return?reduce(f,?lst)
????return?lazy_prod????#2
print?calc_prod([1,?2,?3,?4])()為什么不加#1,2就會(huì)報(bào)錯(cuò)?TypeError: 'int' object is not callable
2 回答

天使之翼死神之鐮
TA貢獻(xiàn)81條經(jīng)驗(yàn) 獲得超102個(gè)贊
你這個(gè)是python的閉包,建議好好學(xué)習(xí)下,calc_prod([1,?2,?3,?4])()后面有括號(hào)說(shuō)明前面calc_prod([1,?2,?3,?4])是個(gè)方法句柄,所以調(diào)用該方法后必須返回一個(gè)方法句柄,即不帶()的方法名,整個(gè)代碼相當(dāng)于執(zhí)行了lazy_prod()。

lanrong1995
TA貢獻(xiàn)2條經(jīng)驗(yàn) 獲得超0個(gè)贊
def calc_prod(lst):
? ?def f(x, y):
? ? ? ?return x * y
? ?return reduce(f, lst)
print calc_prod([1, 2, 3, 4])
這樣就可以跑了,你在calc_prod后面多加了一個(gè)括號(hào)
添加回答
舉報(bào)
0/150
提交
取消