[Python-Dev] os.path.walk() lacks 'depth first' option (original) (raw)
Michael Hudson mwh@python.net
Tue, 22 Apr 2003 09:34:29 +0100
- Previous message: [Python-Dev] os.path.walk() lacks 'depth first' option
- Next message: [Python-Dev] Re: os.path.walk() lacks 'depth first' option
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Tim Peters <tim.one@comcast.net> writes:
[Jeremy Fincher]
This code brought up an interesting question to me: if sets have a .discard method that removes an element without raising KeyError if the element isn't in the set, should lists perhaps have that same method? I don't think list.remove(x) is used enough to care, when the presence of x in the list is unknown.
I've wished for this, more than once, in the past. I can't quite remember why, I have to admit.
while x in seq: seq.remove(x)
is vulgar, on at least two levels.
For all that, I'm not sure this is worth the pain.
On another related front, sets (in my Python 2.3a2) raise KeyError on a .remove(elt) when elt isn't in the set. Since sets aren't mappings, should that be a ValueError (like list raises) instead? Since sets aren't sequences either, why should sets raise the same exception lists raise? It's up to the type to use whichever fool exceptions it chooses. This doesn't always make life easy for users, alas -- there's not much consistency in exception behavior across packages. In this case, a user would be wise to avoid expecting IndexError or KeyError, and catch their common base class (LookupError) instead. The distinction between IndexError and KeyError isn't really useful (IMO; LookupError was injected as a base class recently in Python's life).
Without me noticing, too! Well, I knew there was a lookup error that you get when failing to find a codec, but I didn't know IndexError and KeyError derived from it...
Also note that Jeremy was suggesting ValueError, not IndexError... that any kind of index-or-key-ing is going on is trivia of the implementation, surely?
Cheers, M.
-- First of all, email me your AOL password as a security measure. You may find that won't be able to connect to the 'net for a while. This is normal. The next thing to do is turn your computer upside down and shake it to reboot it. -- Darren Tucker, asr
- Previous message: [Python-Dev] os.path.walk() lacks 'depth first' option
- Next message: [Python-Dev] Re: os.path.walk() lacks 'depth first' option
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]