Рассмотрим следующий пример:
def main_list(error_type):
try:
if error_type == 'runtime':
raise RuntimeError("list error")
if error_type == 'valueerror':
raise ValueError("list error")
except [RuntimeError, ValueError] as e:
print str(e)
def main_tuple(error_type):
try:
if error_type == 'runtime':
raise RuntimeError("tuple error")
if error_type == 'valueerror':
raise ValueError("tuple error")
except (RuntimeError, ValueError) as e:
print str(e)
main_tuple('runtime')
main_tuple('valueerror')
main_list('runtime')
main_list('valueerror')
Кортеж - это правильный способ обработки нескольких типов исключений. Использование списка для нескольких типов исключений не приводит к обработке.
Мне интересно, почему синтаксис Python требует кортежа для нескольких типов исключений. docs говорят, что он использует кортеж, поэтому, возможно, он просто "никогда не был реализован с использованием списка вместо кортежа".
Мне кажется разумным, что список можно также использовать в этой ситуации, по крайней мере, концептуально.
Есть ли причина, по которой Python использует кортеж вместо списка для этой ситуации?