Этот код:
try:
raise ValueError(1,2,3)
except ValueError as (a,b,c):
print("a=%s, b=%s, c=%s" % (a,b,c))
печатает a=1, b=2, c=3
в Python 2, но вызывает SyntaxError
в Python 3:
except ValueError as (a,b,c):
^
SyntaxError: invalid syntax
Как деструктурировать исключения в Python 3?
Кажется, что работает следующее (вдохновлено учебником ):
try:
raise ValueError(1,2,3)
except ValueError as ex:
a,b,c = ex.args
print("a=%s, b=%s, c=%s" % (a,b,c))
но безобразно (и добавляет дополнительную строку кода), что является PITA при преобразовании кодовой базы 2 в 3.