闭包的作用

闭包可以保存运行环境

               思考下面的代码会输出什么?

 

list = []
for i in range(3):
  def func(a):
  return i+a
_list.append(func)
for f in _list:
  print(f(1))

  1 , 2,  3吗?如果不是又该是什么呢?    结果是3, 3, 3 。
    因为,在Python中,循环体内定义的函数是无法保存循环执行过程中的不停变化的外部变量的,即普通函数无法保存运行环境!
想要让上面的代码输出1, 2, 3并不难,“术业有专攻”,这种事情该让闭包来:

_list = []
for i in range(3):
  def func(i):
    def f_closure(a): # <<<---
    return i + a
  return f_closure
_list.append(func(i)) # <<<---
for f in _list:
  print(f(1))
#闭包 ,在函数内当遇到return会把子层函数之前的值保存在内存中

 

转载于:https://www.cnblogs.com/ellisonzhang/p/10265478.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值