Warum erfordert die Behandlung mehrerer Ausnahmen ein Tupel und keine Liste?

Betrachten Sie das folgende Beispiel:

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')

Das Tupel ist der richtige Weg, um mehrere Ausnahmetypen zu behandeln. Die Verwendung einer Liste für die mehreren Ausnahmetypen führt dazu, dass beide nicht behandelt werden.

Ich frage mich, warum Python-Syntax erfordert ein Tupel für mehrere Ausnahmetypen. Das docs sagen wir, dass es ein Tupel verwendet, also ist es vielleicht nur "nie mithilfe einer Liste anstelle eines Tupels implementiert".

s erscheint mir vernünftig, dass eine Liste zumindest konzeptionell auch in dieser Situation verwendet werden kan

Gibt es einen Grund, warum Python in dieser Situation ein Tupel anstelle einer Liste verwendet?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage