Re: [問題] 閉包(closure)的用法或意義已刪文

看板Python作者 (perry tsai)時間4年前 (2019/09/15 03:22), 編輯推噓-1(010)
留言1則, 1人參與, 4年前最新討論串2/2 (看更多)
一些方法你不想要當下執行 而是想在特定的時候執行 閉包就是一個很好用的方式 閉包用最兇的通常是JavaScript 原因是很多方法是需要異步 等網路回傳資料後才根據資料來執行 如果用異步這概念來看 你就能夠知道為什麼會有閉包這種設計 我用個舉例來說明下 1 def lower_name(guest): 2 return guest.name.lower() 3 guest = requests.get("/user/guest") 4 lower_guest_name = lower_name(guest) 因為同步的關係 所以io堵塞住第三行 第四行會等待第三行執行出結果才會跑 就可以正確拿到lower_guest_name 當程式碼有大量的requests要執行 這時候會不斷的堵塞 於是有人寫了一個異步的requests版本async_requests.get("/user/guest", lower_name ) 只要把lower_name方法給進去第二個參數 它就會等資料回傳回來後自動幫你執行lower_name 手機排版懶得實作async_requests了 大致上用Thread就可以實作了 而Thread的target也是送個閉包進去 等start才會去執行閉包 這個主要演示了一個重點 當你的方法不想要當下執行 而是在特定的時候執行 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.171.195.111 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1568488928.A.441.html

09/15 16:06, 4年前 , 1F
這篇完全在亂回吧?closure扯到異步...
09/15 16:06, 1F
文章代碼(AID): #1TVJtWH1 (Python)
文章代碼(AID): #1TVJtWH1 (Python)