[Python-Dev] cpython: Rename contextlib.ignored() to contextlib.ignore(). (original) (raw)
R. David Murray rdmurray at bitdance.com
Sun Oct 13 20:09:16 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 Sun, 13 Oct 2013 13:58:56 -0400, Alexander Belopolsky <alexander.belopolsky at gmail.com> wrote:
The feature (and its name) is a fine solution for the problem that it solves and is an improvement over status quo.
I find with ignore(OSError): os.unlink(path) much easier to read than try: os.unlink(path) except OSError: pass Yes, this feature can be abused with multiple statements in the with block, but so can try/except. People who write code using contextlib are expected to know that it is not a good idea to keep resources longer than necessary and multiple unrelated statements within the with block will raise a mental red flag. It is also easy for lint-like tools to warn about abuse of ignore().
With blocks very often include multiple lines of code, because the resource shouldn't be released until all those lines are done. try/except blocks with more than a couple lines of code are a code smell. with replaces try/finally, not try/except.
I have no problem with Nick deciding that none of the arguments convince him and leaving it in. We'll see how it turns out in practice :)
--David
- 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 ]