PyCharm: На переменную в блоке finally можно ссылаться перед присваиванием?
PyCharm предупреждает меня, что переменная category
можно ссылаться до назначения, но я так не думаю.
Кроме должен ловить каждый Exception
(кроме фатальных ошибок) и наконец вызывается после try
или же except
блок.
try:
category = lst[2]
except:
category = None
finally:
if not category: #here
category = self.default_category
Как вы думаете? Это правда или это ошибка?
1 ответ
Возможно, PyCharm видит назначение, не учитывая "назначение чему". Это None
это то, что имеет значение, подумайте, если вы вместо этого написали:
try:
category = lst[2]
except:
category = Noone
finally:
if not category:
category = self.default_category
(Или же None/1
и т. д.) Тогда вы получите:
NameError: name 'category' is not defined
как будет исключение в случае, если lst
были пусты:
Когда исключение произошло в предложении try и не было обработано предложением исключений (или оно произошло в предложении исключения или иначе), оно повторно вызывается после выполнения предложения finally.