Горячо приветствую всех любителей Питона!
У меня для вас загадка. Что сделают сии четыре прекрасных отрывка кода?
x = 1
for x in range(6): pass
print(x)
x = 1
with open('tmp', 'w') as x: pass
print(x)
x = 1
try: pass
except IOError as x: pass
print(x)
x = 1
try: raise IOError('test error')
except IOError as x: pass
print(x)
Когда вы сделаете в уме свое предположение, запустите код и увидите, что ожидания (частично) разошлись с реальностью (unless you're Dutch), ваш разум может потребовать объяснений происходящему.
Часть вы получите здесь https://mail.python.org/pipermail/python-3000/2007-January/005384.html, но здесь же вас ожидает вторая загадка!
Там приведена некоторая трансформация кода. Однако, трансформированный код может упасть, даже если не падал исходный. Почему?
Ответ на вторую здесь https://mail.python.org/pipermail/python-3000/2007-January/005387.html
С чего начался весь сыр-бор: нижняя цитата и ответ на нее здесь https://mail.python.org/pipermail/python-3000/2007-January/005297.html
Ну и можно полистать переписку вперед-назад для полноты картины.