Charles Yeomans <char...@declaresub.com> wrote: > To catch more than one exception type in an except block, one writes > > except (A, B, C) as e: > > I'm wondering why it was decided to match tuples, but not lists: > > except [A, B, C] as e: > > The latter makes more sense semantically to me -- "catch all exception > types in a list" as opposed to "catch this single thing composed of > three exception types". > It may not be the only reason but the code would have to be slower and much more complex to handle lists.
If you wanted you can write: except ((A,), ((B,), C)) as e: or other such complicated expression with nested tuples. If lists were allowed in a similarly nested structure there would be a danger that you could pass in a recursive list structure so the code would have to detect and avoid infinite loops. exceptions = [A, B, C] exceptions[1:1] = exceptions, ... except exceptions as e: # argh! Abitrarily nested tuples of exceptions cannot contain loops so the code simply needs to walk through the tuples until it finds a match. -- Duncan Booth http://kupuguy.blogspot.com -- http://mail.python.org/mailman/listinfo/python-list