Yair Eshel
2024-06-13 10:01:11 UTC
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
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
בברכה,
יאיר אשל כהנסקי
מתכנת וטכנאי מילים
https://www.inspect-element.net/YouAreHere/#/start