Callback scoping

Marc 'BlackJack' Rintsch bj_666 at gmx.net
Thu Jul 5 15:56:08 EDT 2007


On Thu, 05 Jul 2007 19:14:07 +0000, Dan wrote:

> So, I think I understand what python's scoping is doing in the
> following situation:
>>>> x = [ lambda: ind for ind in range(10) ]
> 
> […]
> 
> 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.)

Default arguments are evaluated when the function is defined:

In [15]: x = [lambda x=i: x for i in xrange(10)]

In [16]: x[0]()
Out[16]: 0

In [17]: x[5]()
Out[17]: 5

Ciao,
	Marc 'BlackJack' Rintsch



More information about the Python-list mailing list