学习
实践
活动
专区
工具
TVP
写文章

Python每日一题

题目:如果理解 Python 中的闭包?

答案要点如下:

解释什么是 返回函数,这是像类似 JAVA 这样的静态语言所做不到的功能。即在函数中嵌套定义一个函数,而在外层函数可以返回内层函数名。简单示例如下:

闭包概念的基础就是基于 Python 中的 返回函数 的特性,它的要点:嵌套函数;内层使用外层非全局的变量。简单示例如下:

闭包所体现的延迟绑定,当我们在外层有循环变量时,在内层使用可能不会出现我们预期的效果。下面代码的现象就是延迟绑定,即当我们在返回 inner 这个函数时,它里层的代码并没有执行,而当我们 print…for…in 去调用返回接受到的函数时,它才真正执行,而此时,i 的值已经是3了。这也告诉我们在闭包中,尽量不要使用循环变量。示例如下:

而如果一定要使用循环变量,也是可以解决的。解决思路是因为上述代码中,循环变量之所以没有一次一次生效,而是在最后生效,是因为它整体都在 inner 函数中。我们只需要用一个可立即执行的代码去承接循环变量,即可解决这一问题,比如我们用一个函数去承接它,示例如下:

愿关注我们的人都能找到

属于自己的皮球

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180314G1846R00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

关注

腾讯云开发者公众号
10元无门槛代金券
洞察腾讯核心技术
剖析业界实践案例
腾讯云开发者公众号二维码

扫码关注腾讯云开发者

领取腾讯云代金券