Подтвердить что ты не робот

Область переменной Python в операторах if

В Python существуют переменные области внутри if-операторов, видимые вне if-statement? (исходя из фона Java, поэтому найдите это немного странно)

В следующем случае имя сначала определяется внутри if-блока, но переменная также видна вне if-блока. Я ожидал ошибки, но "joe" печатается.

if 1==1:
    name = 'joe'
print(name)
4b9b3361

Ответ 1

Операторы

if не определяют область действия в Python.

Также не выполняются петли, операторы with, try/except и т.д.

Только модули, функции и классы определяют области действия.

См. Области и пространства имен Python в учебнике Python.

Ответ 3

Все переменные python, используемые в функции, живут в области уровня функции. (игнорируя глобальные и замыкающие переменные)

Это полезно в случае, например:

if foo.contains('bar'):
   value = 2 + foo.count('b')
else:
   value = 0

Таким образом, я не должен объявлять переменную перед оператором if.