isPrime works but UnBoundLocalError when mapping on list
Terry Reedy
tjreedy at udel.edu
Wed Jul 16 19:46:44 EDT 2008
Andreas Tawn wrote:
> Terry Reedy wrote:
>> For loop variables continue after the loop exits. This is
>> intentional.
> I never knew that and I can't find reference to it in the docs. Can you
> help me with the reasons for it?
1. Python's reluctance to multiply scopes without necessity (as other
respondents have discussed).
2. This way, a for loop abbreviates an equivalent while loop (which does
have an explicit assignment). Something like:
for item in iterable:
suite
it = iter(iterable)
while True
item = next(it) # 3.0, 2.6?
suite
Of course, one could add 'del item' after the loop, but...
3. For search loops, the final value bound may be wanted after the loop.
for item in iterable:
if pred(item): break
else:
item = default
# item is now first item in iterable with property pred
# or fallback default.
f(item)
tjr
More information about the Python-list
mailing list