Rudy, I think your proposal may be very specific to iterable context managers; in which case, make a method that makes that assumption:
def iter_with(obj): with obj as context: yield from context
and use it
g = ( f.read() for fn in filenames for f in iter_with(open(fn)) )
On 2018-07-30 15:15, Rudy Matela wrote:
Hello,
Do you think it would be nice to allow with statements inside genexps or list comprehensions? The functions __enter__ and __exit__ would be automatically called as iterables are traversed. I am thinking of drafting a PEP about this. Examples:
This
g = (f.read() for fn in filenames with open(fn) as f)
would be equivalent to the following use of a generator function:
def __gen(): for fn in filenames: with open(fn) as f: yield f.read() g = __gen()
This
list = [f.read() for fn in filenames with open(fn) as f]
would be equivalent to the following:
list = [] for fn in filenames: with open(fn) as f: list.append(f.read())
-- Rudy _______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/