[問題] python閉包的語法

看板Python作者 (請輸入ID)時間6年前 (2019/07/29 08:34), 6年前編輯推噓3(305)
留言8則, 7人參與, 6年前最新討論串1/1
我想請問關於python閉包的語法該怎麼理解 範例如下 def outer(): b = 10 def inner(x): return 5 * x + b return inner b = 2 f = outer() print(f(b)) 為什麼最後答案會是20 完全不了解,整個程式的流程 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 122.117.25.41 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1564360471.A.965.html

07/29 08:42, 6年前 , 1F
耶... 我這邊跑16耶
07/29 08:42, 1F

07/29 08:45, 6年前 , 2F
你寫錯答案了吧?直覺想法是f=inner,所以跑出5*2+6=16?
07/29 08:45, 2F

07/29 13:02, 6年前 , 3F
我猜是5*x+b吧
07/29 13:02, 3F

07/29 15:37, 6年前 , 4F
你return inner就是return inner那個method阿...
07/29 15:37, 4F

07/29 15:56, 6年前 , 5F
我猜你根本板書抄錯了 應該是5*x+b 然後函式都少了參數
07/29 15:56, 5F

07/29 22:29, 6年前 , 6F
f=outer 應該要有參數吧
07/29 22:29, 6F
貝~~不~~起~~各位,那時是在上班前看書,所以是5*x+b,看到的因為急著出門 (不然全勤就沒了) ※ 編輯: spong (122.117.25.41 臺灣), 07/30/2019 02:08:15 ※ 編輯: spong (122.117.25.41 臺灣), 07/30/2019 02:09:24

07/30 21:09, 6年前 , 7F
f = outer() 下一行你加個 print(f),這個輸出結果你懂嗎
07/30 21:09, 7F

07/30 21:10, 6年前 , 8F
如果你不懂 f 為什麼是那個結果 那你其他都不會懂
07/30 21:10, 8F
文章代碼(AID): #1TFZyNbb (Python)
文章代碼(AID): #1TFZyNbb (Python)