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