steve at holdenweb.com
Wed Sep 5 08:35:56 CEST 2007
>> I explain it by noting that list.index and dict.get serve totally
>> different purposes. The former returns the index given a value; the
>> latter returns a value given a key.
> And the former raises an exception if the value is not found, while
> the latter returns None if the value is not found.
>> There are many areas of poor symmetry in the language and libraries;
>> it isn't particularly clever or difficult to find them if one
>> looks. Doing so doesn't appear to illustrate any point I see relevant
>> in this thread.
> It has been stated in this thread, that in Python, exceptions are used
> differently than in other languages. Rather than just use them for
> catastrophic errors that can't be dealt with, Python raises exceptions
> on routine and survivable situations such as an item not found in a
> list. It was mentioned that an exception is more Pythonic than
> returning a "not found" value.
> Someone pointed out that find() in str was a contradiction to this
> since it doesn't throw an exception but returns a "not found" value,
> and the response was that it was believed that find() would be removed
> from the language (if so, it does not currently show up on the
> "removed list" as has_key() and a few others do -
> http://docs.python.org/dev/3.0/whatsnew/3.0.html) and was only there
> for "historical reasons".
> I don't believe the poster was trying to illustrate a point already
> mentioned in the thread, but to give a contradiction to statements in
> the thread. He was asking the question - why doesn't dict.get() throw
> an exception on not found if that is the Pythonic way?
Because it's an explicit short-cut for a frequently-required paradigm.
It's effectively an extension to dict indexing - which, you will recall,
*does* raise an exception when the key is not found. Does *everything*
have to raise such an exception?
There's no requirement for Python to be 100% consistent in its
application of a principle, but on the whole it is reasonably consistent.
For Pete's sake stop wasting your time and go do some programming.
Nothing will ever be perfect, not even Python ;-)
Steve Holden +1 571 484 6266 +1 800 494 3119
Holden Web LLC/Ltd http://www.holdenweb.com
Skype: holdenweb http://del.icio.us/steve.holden
--------------- Asciimercial ------------------
Get on the web: Blog, lens and tag the Internet
Many services currently offer free registration
----------- Thank You for Reading -------------
More information about the Python-list