On 10Apr2015 19:38, Rustom Mody <rustompm...@gmail.com> wrote:
On Saturday, April 11, 2015 at 7:53:31 AM UTC+5:30, Dave Angel wrote:
On 04/10/2015 09:42 PM, Steven D'Aprano wrote:
> On Sat, 11 Apr 2015 05:31 am, sohcahtoa82 wrote:
>> It isn't document because it is expected.  Why would the exception get
>> caught if you're not writing code to catch it?  If you write a function
>> and pass it a tuple of exceptions to catch, I'm not sure why you would
>> expect it to catch an exception not in the tuple.  Just because the tuple
>> is empty doesn't mean that it should catch *everything* instead.  That
>> would be counter-intuitive.
>
> Really? I have to say, I expected it.

I'm astounded at your expectation.  That's like saying a for loop on an
empty list ought to loop on all possible objects in the universe.

To work, this analogy should also have two python syntaxes like this:

"Normal" for-loop:
for var in iterable:
 suite

"Empty" for-loop:
for:
 suite

Well, to throw an anaolgy in the mix, the shell has a bare for syntax.

 list='a b c'
 for x in $list
 do  echo $x
 done

echoes a, b and c as you might expect.

This:

 for x
 do  echo $x
 done

echoes the command line arguments. (Which is extremely useful.)

But as with Python, the missing iteration means a _default_ source of iteration, not _no_ iteration.

To continue the analogy, this:

 list=
 for x in $list
 do  echo $x
 done

echoes nothing. As I would hope Steven would expect.

Importantly, in both Python and the shell you have a way to specify "nothing". If the empty tuple were to mean "catch everything" then there would not be a way to express "catch nothing". Bad bad bad!

Consider this a proof that Python's current meanings for bare except and "except ()" are sensible, using a proof by contradiction.

Cheers,
Cameron Simpson <c...@zip.com.au>
--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to