В общем случае Python не изменяет объем переменных внутри цикла (for
, while
) или if
конструкции:
у вас есть один d
переменных в функции, независимо от его использования внутри цикла или нет ,
Есть, однако, исключения: одним из них является то, что вы можете использовать циклы внутри понятий списка или выражений генератора - переменные, используемые в этих циклах, являются локальными для выражения - хотя t, будучи выражениями, они не позволяют использовать общие назначение переменных:
def a():
d = 0
any(print(d) for d in range(12))
print("main d:", d)
(В этом примере используется функция печати Python 3).
Другое исключение - это переменная, для которой исключение назначается в try
... except
блок. Эта переменная является локальной для блока, за исключением, и прекращает существующий из IT-, но вместо того, чтобы иметь вложенную сферу, Python делает удалить переменную из текущей области:
In [34]: def b():
...: a = 1
...: try:
...: 1/0
...: except ZeroDivisionError as a:
...: print(a)
...: print(a)
...:
In [35]: b()
division by zero
---------------------------------------------------------------------------
UnboundLocalError Traceback (most recent call last)
...
----> 7 print(a)
8
Это ваш отступ, что вы хотите, потому что прямо сейчас 'd' станет' 12' – MooingRawr
«не будет ли локальная переменная функции по-прежнему 0?» - какая локальная переменная? Я вижу два, ни один из которых не будет 0 в конце цикла. – user2357112
@MooingRawr цикл повлияет на значение D в функции. – ihazgum