Это не вопрос ссылки на эту переменную в try / catch, это вопрос определения этой переменной вне функции, в которой вы ее использовали. flag
объявляется вне abc()
и не объявляется как глобальное;следовательно, python не верит, что внутри функции есть переменная с именем flag
, которую он может использовать. (Если я прав, flag
объявлен как часть __main__
, поскольку вы можете напечатать его ниже вызова abc()
без проблем.)
Если вы намеревались использовать flag
как не что иное как счетчик, перемещение его внутри def
работает:
def abc():
flag = 0
while flag <= 10:
try:
print(10/0)
except Exception:
print('yo')
flag += 1
abc()
Если, однако, вы намеревались использовать его в другом месте, вам придется объявить его как глобальный ( не рекомендуется) или объявить его как локальную переменную, а затем вернуть его. Если он определен внешне, рассмотрите возможность передачи его в качестве параметра abc
.