[Python-Dev] cpython: Rename contextlib.ignored() to contextlib.ignore(). (original) (raw)
Raymond Hettinger raymond.hettinger at gmail.com
Sun Oct 13 03:50:51 CEST 2013
- Previous message: [Python-Dev] cpython: Rename contextlib.ignored() to contextlib.ignore().
- Next message: [Python-Dev] cpython: Rename contextlib.ignored() to contextlib.ignore().
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Oct 12, 2013, at 4:30 PM, Ethan Furman <ethan at stoneleaf.us> wrote:
When you ask someone to describe what "try: f() except SomeException: pass" does, they will say that it ignores the exception. And they would be right in that case. FWIW, I presented this to 2500+ people in the keynote at the 2013 U.S. Pycon and have received favorable feedback. Were you only displaying the same short form above?
Yes. The specific example given was:
with ignore(OSError):
os.remove(somefile)
The intended use for the context manager is for the common cases like these:
try:
os.mkdir(dirname)
except OSError:
pass
def discard(self, key):
"""If the keyed message exists, remove it."""
try:
self.remove(key)
except KeyError:
pass
Most cases of try/except/pass that I see span only one or two lines in the try-block.
Or did you show some with many lines of code inside the with block? If you didn't, is that because it's a bad idea?
Compare: try: f() g() h() except SomeException: pass
Yes, that is usually a bad idea.
We don't recommend code like that with try/except.
Using a context manager in this case wouldn't make it better.
For the record, I am no longer opposed to this context manager, only to its name.
It just like the old days where there were 100+ emails suggesting other names for enumerate() before agreeing that it had been right to begin with.
Raymond -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.python.org/pipermail/python-dev/attachments/20131012/c69b4750/attachment-0001.html>
- Previous message: [Python-Dev] cpython: Rename contextlib.ignored() to contextlib.ignore().
- Next message: [Python-Dev] cpython: Rename contextlib.ignored() to contextlib.ignore().
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]