Feature suggestions: "Using declarations" i.e. context managers ("with" blocks) tied to scope/lifetime of the variable rather than to nesting

mnl.post at gmail.com mnl.post at gmail.com
Mon Feb 18 23:15:19 EST 2019


I thought this new C# feature would be a good thing to add to Python:
https://vcsjones.com/2019/01/30/csharp-8-using-declarations/

I find the nesting required by context managers to be at odds with the
broad intent.

The code indentation in python should reflect the program logic and
flow as much as possible, but for thing, the context manager generally
doesn't apply to most of the code it forces to be indented, but only
to a few lines using the resource; for another, even for those lines,
the context manager is usually not reflective of the flow anyway
(unlike the classic control statements, such as for/next, if/else, and
while).
for example:
with xxxxxx.open() as logfile:
     do this
     do that
     logfile.write()
     do this
     do that
     logfile.write()

This becomes more ugly if multiple withs get nested.


More information about the Python-list mailing list