python之闭包

今天小a问了我一个问题,

小a:“map怎么用?”

我:“啊,这样啊:

小a:”那我想要每个字符串前面2个0怎么办?“

我:”可以这样:

小a:“那我下次想要4个0怎么办?”

我:“可以用闭包,像这样:

这里运用了闭包,拿上述的代码来说,我调用了newstr2,但是不管我给了i什么参数,最后返回的都是newstr。那也就是说其实相当于我还是调用了newstr,这......意义在哪里呢?我们知道变量是可以向下传递的,newstr2函数里变量i是可以给newstr函数用的,那我们是不是就可以在不改变原函数的参数传递情况下,而对这个函数加以改变和修饰?

newstr3 = newstr2(10) #newstr3是一个函数对象

def newstr4(n):

return str(n).zfill(10)

这里的newstr3实际运行中就相当于函数newstr4.

而闭包最神奇之处就是装饰器的使用了,比如函数运行中有个算法如果运行时间超过1分钟,我就跳过换另一个算法运行计算,这怎么实现呢?

闭包:

这篇文章解释的挺好可以看下:

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

扫码关注云+社区

领取腾讯云代金券