I have a deep suspicion that this has been done to death already, but my searching ability isn't up to finding the reference. So I'll simply ask the question, and not offer a long discussion: Has the option of letting the with statement admit multiple context managers been considered (and presumably rejected)? I'm thinking of with expr1, expr2, expr3: # whatever In some ways, this doesn't even need an extension to the PEP - giving tuples suitable __enter__ and __exit__ methods would do it. Or, I suppose a user-defined manager which combined a list of others: class combining: def __init__(*mgrs): self.mgrs = mgrs def __with__(self): return self def __enter__(self): return tuple(mgr.__enter__() for mgr in self.mgrs) def __exit__(self, type, value, tb): # first in, last out for mgr in reversed(self.mgrs): mgr.__exit__(type, value, tb) Would that be worth using as an example in the PEP? Sorry - it got a bit long anyway... Paul. PS The signature of __with__ in example 4 in the PEP is wrong - it has an incorrect "lock" parameter.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4