x = 3
y = list(x**2 for x in range(5))
print(f"{x=}")
This code prints "x=3".
Why this exception to the rule? IIRC from the discussions back
when they were added, this one of those "it just seemed best at
the time" things. "for" was added to the language long before I
got there, but it "leaking" its assignment was judged useful; if
you broke out of the loop, you could continue to examine the last
value from the loop. But, the thinking went, you'd never want to
examine the last value from a list generator, so it was more
convenient if it behaved as if it had its own scope.
Hi,
I'm wondering why
```
x = "value"
try:
1/0
except Exception as x:
pass
```
does not restore "value" to x after
the `except` block.
There doesn't seem to be an explanation for this behavior in the docs or PEPs, that I can find.
Nor does there seem to be any good technical reason for doing it this way.
Anyone know why, or is just one of those unintended consequences like `True == 1`?
Here's an example of restoring the value of the variable after the `except` block:
>>> def f(x):
... try:
... 1/0
... except Exception as x:
... pass
... return x
...
>>> f("hi")
'hi'
Cheers,
Mark.
_______________________________________________
Python-Dev mailing list -- python-dev@python.org
To unsubscribe send an email to python-dev-leave@python.org
https://mail.python.org/mailman3/lists/python-dev.python.org/
Message archived at https://mail.python.org/archives/list/python-dev@python.org/message/KGYRLITEPB22ZZO4N7DD4A7QP7FQS6JO/
Code of Conduct: http://python.org/psf/codeofconduct/