【问题标题】:Closures and Loops in Python [duplicate]Python中的闭包和循环[重复]
【发布时间】:2012-10-13 21:03:01
【问题描述】:

可能重复:
Lexical closures in Python

假设我有以下代码

callbacks = []
for i in range(10):
  callbacks.append(lambda x: i)

callbacks 中的所有函数都将返回 i 的最终值。如何创建回调以在创建时返回 i 的当前值

【问题讨论】:

    标签: python closures


    【解决方案1】:
    for i in range(10):
      callbacks.append(lambda x = i : x)
    

    【讨论】:

      【解决方案2】:
      In [113]: callbacks=[]
      
      In [114]: for i in range(10):
          callbacks.append(lambda x=i:x**2)
         .....:     
         .....:     
      
      In [117]: callbacks[0]()
      Out[117]: 0
      
      In [118]: callbacks[1]()
      Out[118]: 1
      
      In [119]: callbacks[2]()
      Out[119]: 4
      
      In [120]: callbacks[4]()
      Out[120]: 16
      

      【讨论】:

      • 我猜你的意思是lambda x=i: x
      • @larsmans 啊!是的,谢谢你的收获。
      猜你喜欢
      • 2019-06-14
      • 2018-12-26
      • 1970-01-01
      • 1970-01-01
      • 2019-02-13
      • 2012-07-03
      • 1970-01-01
      • 2020-10-18
      • 1970-01-01
      相关资源
      最近更新 更多