13 Dec
2007
13 Dec
'07
12:41 a.m.
Arnaud Delobelle schrieb:
Let's test this (python 2.5):
A = '12' B = 'ab' gen = (x + y for x in A for y in B) A = '34' B = 'cd' list(gen) ['1c', '1d', '2c', '2d']
So in the generator expression, A is remains bound to the string '12' but B gets rebound to 'cd'. This may make the implementation of generator expressions more straighforward, but from the point of view of a user of the language it seems rather arbitrary. What makes A so special as opposed to B? Ok it belongs to the outermost loop, but conceptually in the example above there is no outermost loop.
Well, B might depend on A so it can't be evaluated in the outer context at the time the genexp "function" is called. It has to be evaluated inside the "function". Georg