0

Что происходит с переменными, назначенными в первый раз (определены) внутри оператора if или for, если прошло много времени с момента запуска их кода. Есть ли какая-то сборка мусора, которая может привести к исключению переменной переменной. Например:Переменные, определенные внутри операторов if или for

if True: 
    a=1 
else: 
    a=3 
# long time passed and other codes run 
# . 
# . 
# . 
print (a) 

В моем коде обнаружена ошибка, которая, как я подозреваю, является причиной. Документировано ли это где-то в официальной документации Python?

+3

Если ваши переменные не выходят за пределы области видимости, не следует собирать мусор. То, как работает счетчик ссылок (способ сбора мусора Python). –

+1

переменные остаются, пока область действия существует, если только они не удалены 'del a'. – Daniel

+0

Почему вы подозреваете, что это причина? Код, который вы публикуете, не приближается к воспроизведению вашей предполагаемой ошибки. – chepner

ответ

1

В Python, если вы определяете переменную в операторе if, она будет продолжать существовать после завершения вывода if. Области определены для class, a def или глобальной области; если вы находитесь в функции и вы определяете переменную внутри if, например, эта переменная будет существовать до тех пор, пока функция не будет выполнена.

Будьте осторожны, однако, определения переменных в коде следующим образом:

if x == True: 
    a = 1 
else: 
    print "Not true" 

Если у вас есть такой код, и x заканчивает тем, что False, то a не будет определен. Позже вызовы a будут вызывать исключение. Поэтому убедитесь, что вы избавляетесь от любых потенциальных проблем такого рода.

 Смежные вопросы

  • Нет связанных вопросов^_^