頁:
[1]
關於Python內部函數的問題,麻煩前輩指導(已解決,感謝各位前輩)
本帖最後由 chialewang 於 2019-8-27 10:59 AM 編輯各位前輩 您們好:
線上教學他打的是以下的程式碼
我照keyin
def FunX(x):
def Fun(y):
return x * y
return FunY
i = FunX(8)
i(5)但卻顯示 NameError: name 'FunY' is not defined
我不曉得哪裡錯了?怎樣都顯示不出他說的 8*5 = 40
此外,此單元叫"閉包"?
聽起來好像怪怪的,好像大陸用語
真的叫閉包嗎? 還是台灣有更正確的說法
麻煩前輩們指點一下
...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div><div></div> snowflying 前輩 您好:
您說:"你裡面的打成 Fun 而不是 FunY"
是指第二行嗎?
我改成def FunY(y):
依然不行耶def FunX(x):
def FunY(y):
return x * y
return FunY
i = FunX(8)
i(5)請前輩指教 感恩
本帖最後由 tryit244178 於 2019-8-26 04:28 PM 編輯
改成這樣試試
用print()把結果顯示出來>>>def FunX(x):
... def FunY(y):
... return x*y
... return FunY
...
>>>i = FunX(8)
>>>print(i)
>>>print(type(i))
>>>print(i(5))
>>>print(FunX(8)(5))
補充內容 (2019-8-25 10:13 AM):
格式一直被吃掉...放棄編輯orz
補充內容 (2019-8-26 04:29 PM):
搞…搞定了_(:з」∠)_ 在 python 的例子中… 如果看到 >>> 開頭。
就表示它是在 python shell 裡執行的。
如果一行中只有變數,會將它的值印出來… (還有沒有其它的詳細規則,我不清楚。)
所以範例中 只寫 i(5) ,但實際上會有 「print(i(5))」的效果。
猜想可能是樓主不在 python shell 環境,覺得沒有東西輸出感到奇怪…
閉包這個詞,在台灣也有人在用吧!至於是不是對岸用語,老實說我覺得已不重要了。
台灣的程式中文書市場不夠大,繁中書出版的量太少,翻譯書也慢原版的許久。
如果英文不夠好,接觸大陸用的習慣用語是閃不掉了,早點習慣比較好。
閉包就是一個變數生存空間,以及能否被使用的概念。
在 JavaScript 裡也常常使用到這個概念,能寫出許多看起來很神奇,
要讀懂很花力氣的程式碼… XD...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div> chialewang 發表於 2019-8-24 08:08 PM static/image/common/back.gif
snowflying 前輩 您好:
您說:"你裡面的打成 Fun 而不是 FunY"
snowflying 前輩 您好:
沒有錯誤訊息
不過我改成您上次教導我的
凡事要多+print,那一定印得出來
所以我+了def FunX(x):
def FunY(y):
return x * y
return FunY
i = FunX(8)
print(i(5))
print(FunX(8)(5))
果然很成功的輸出40
再次感謝您的指點 感恩...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div><br><br><br><br><br><div></div> tryit244178 發表於 2019-8-25 10:09 AM static/image/common/back.gif
改成這樣試試
用print()把結果顯示出來
tryit244178 前輩 您好:
我將您的程式碼改成def FunX(x):
def FunY(y):
return x * y
return FunY
i = FunX(8)
print(i(5))
print(FunX(8)(5))
結果成功印出
我是用spyder下去寫的
所以加上print就成功了
感謝前輩的指導 感恩...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div> ddttdtxb 發表於 2019-8-25 05:28 PM static/image/common/back.gif
在 python 的例子中… 如果看到 >>> 開頭。
就表示它是在 python shell 裡執行的。
ddttdtxb 前輩 您好:
我的確不是在python shell 環境編寫
是在spyder
+上print就成功輸出了
關於"閉包"的說明
感謝您的說明 感恩
頁:
[1]