Callback scoping

Dan thermostat at gmail.com
Thu Jul 5 21:14:07 CEST 2007


So, I think I understand what python's scoping is doing in the
following situation:
>>> x = [ lambda: ind for ind in range(10) ]
>>> x
[<function <lambda> at 0x00BEC070>, <function <lambda> at 0x00BEC7F0>,
<function <lambda> at 0x00BECA70>, <function <lambda> at 0x00C1EBF0>,
<function <lambda> at 0x00C1EE30>, <function <lambda> at 0x00C228F0>,
<function <lambda> at 0x00C228B0>, <function <lambda> at 0x00C28730>,
<function <lambda> at 0x00C286F0>, <function <lambda> at 0x00C287F0>]
>>> x[0]()
9
>>> x[5]()
9
>>> x[9]()
9
>>> ind
9
>>> ind = 2
>>> x[0]()
2
>>>

But, I'm wondering what is the easiest (and/or most pythonic) way to
get the behavior I want? (If you haven't guessed, I want a list of (no
parameter) functions, each of which returns its index in the list.)

-Dan




More information about the Python-list mailing list