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

作者: ripple0129 (perry tsai)   2019-09-15 03:22:06
一些方法你不想要當下執行
而是想在特定的時候執行
閉包就是一個很好用的方式
閉包用最兇的通常是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才會去執行閉包
這個主要演示了一個重點
當你的方法不想要當下執行
而是在特定的時候執行
作者: lemon651 (小明)   2019-09-15 16:06:00
這篇完全在亂回吧?closure扯到異步...

Links booklink

Contact Us: admin [ a t ] ucptt.com