Sujet : Suggested python feature: allowing except in context maneger
De : guruyaya (at) *nospam* gmail.com (Yair Eshel)
Groupes : comp.lang.pythonDate : 13. Jun 2024, 11:01:11
Autres entêtes
Message-ID : <mailman.130.1718284531.2909.python-list@python.org>
References : 1
Hello. I read this is a good place to give some suggestions for features in
python. If not, please let me know.
This is an example of a code I normally use in my everyday work:
import logging
try:
with open('sample_data/READM.md') as f:
print (len(f.read()))
except FileNotFoundError:
logging.error("File not found")
As you can see I have 2 levels of indentation, which can add some pain to
the work with the context manager. This code without context manager, can
be replaced by this code:
import logging
try:
f = open('sample_data/READM.md') as f:
print (len(f.read()))
except FileNotFoundError:
logging.error("File not found")
finally:
f.close()
And while this offers less indentations, it skips the usage of the very
handy context manager.
I would like to suggest an alternative syntax, that will, in a sense, apply
the best of both worlds:
import logging
with open('sample_data/README.md') as f:
print (len(f.read()))
except FileNotFoundError:
logging.error("File not")
As "with" applies the behavior of the "try / finally" it feels like a
natural part of this syntax. This could provide a cleaner code.
If this idea is accepted, there are several things that need to be
discussed, like what to do with "else" or "finally" statement following a
context manager. I'm not sure about the proper way to handle this.
With hopes for an even more readable future
Yair
-- בברכה,יאיר אשל כהנסקימתכנת וטכנאי מיליםhttps://www.inspect-element.net/YouAreHere/#/start