2

重複の可能性:
Python のレキシカル クロージャ

次のコードがあるとします

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

のすべての関数はcallbacksの最終値を返しますi作成時に iの現在の値を返すコールバックを作成するにはどうすればよいですか?

4

2 に答える 2

6
for i in range(10):
  callbacks.append(lambda x = i : x)
于 2012-10-23T20:34:59.000 に答える
3
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
于 2012-10-23T20:36:10.623 に答える