亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

關于返回函數,為什么要在外面再套一個函數?

關于返回函數,為什么要在外面再套一個函數?

錯過了年華 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就會報錯?TypeError: 'int' object is not callable
查看完整描述

2 回答

?
天使之翼死神之鐮

TA貢獻81條經驗 獲得超102個贊

你這個是python的閉包,建議好好學習下,calc_prod([1,?2,?3,?4])()后面有括號說明前面calc_prod([1,?2,?3,?4])是個方法句柄,所以調用該方法后必須返回一個方法句柄,即不帶()的方法名,整個代碼相當于執行了lazy_prod()。

查看完整回答
1 反對 回復 2018-01-08
?
lanrong1995

TA貢獻2條經驗 獲得超0個贊

def calc_prod(lst):
? ?def f(x, y):
? ? ? ?return x * y
? ?return reduce(f, lst)
print calc_prod([1, 2, 3, 4])

這樣就可以跑了,你在calc_prod后面多加了一個括號

查看完整回答
反對 回復 2018-01-03
  • 2 回答
  • 0 關注
  • 1488 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號