Я согласен, что нет блока блока. Но одно место в Python 3 делает его SEEM таким, как если бы он имел область видимости блока.
что случилось, что дало этот взгляд?
Это работало должным образом в Python 2. Но чтобы остановить переменную утечку в Python 3, они сделали этот трюк, и это изменение заставляет его выглядеть так, как будто у него здесь есть область видимости блока.
Позвольте мне объяснить.
В соответствии с идеей области действия, когда мы вводим переменные с одинаковыми именами в одну и ту же область действия, ее значение должно быть изменено.
это то, что происходит в Python 2
>>> x = 'OLD'
>>> sample = [x for x in 'NEW']
>>> x
'W'
Но в Python 3, даже если введена переменная с тем же именем, она не переопределяет, понимание списка действует по какой-то причине как песочница и похоже на создание в ней новой области видимости.
>>> x = 'OLD'
>>> sample = [x for x in 'NEW']
>>> x
'OLD'
и этот ответ идет вразрез с ответчиком @ высказыванием Томаса Единственным средством для создания области видимости являются функции, классы или модули , поскольку это похоже на еще одно место создания новой области видимости.