Thanks for the link, the rationale for rejection seems reasonable. On Fri, Dec 11, 2020 at 8:19 PM Chris Angelico <ros...@gmail.com> wrote:
> On Sat, Dec 12, 2020 at 11:42 AM Jonathan Crall <erote...@gmail.com> > wrote: > > > > I'm not sure if this has been asked / suggested before. > > > > I'm wondering if there is any interest in conditional or loop-based > `with` statements. I think it could be done without a syntax change. > > > > ### Napkin proposal > > > > Context managers could define `__if__` or `__for__`, and if those dunder > methods were defined, then the `with` statement would either behave like a > conditional or a loop. > > > > If `__if__` was defined then > > > > ``` > > with Ctx(): > > print('hi') > > ``` > > > > would only print `hi` if `__if__` returned True. This doesn't require a > syntax change. > > This part has been proposed before: > https://www.python.org/dev/peps/pep-0377/ > > > > The `__for__` variant would likely need a minor syntax change. > > > > ``` > > with item in Ctx(): > > print(item) > > ``` > > > > The `__for__` method is a generator that generates arguments of a loop. > The item will be printed as many times as there are items generated by > `__for__`. > > > > Not sure that this one has, but it's basically just a context manager > and a for loop, so I'm not really sure how much you'd gain over just > using the two constructs independently, given that there'd then be > massive confusion over "when should I use 'with item in thing' and > when should I use 'for item in thing'?". > > For many use cases, it may be best to write the body as a function, > which can then be called more than once. You can decorate a function > in order to do whatever you like, and the return value from the > decorator could be whatever stats you want to provide (there's no rule > says that a function decorator has to return a function!). > > ChrisA > _______________________________________________ > Python-ideas mailing list -- python-ideas@python.org > To unsubscribe send an email to python-ideas-le...@python.org > https://mail.python.org/mailman3/lists/python-ideas.python.org/ > Message archived at > https://mail.python.org/archives/list/python-ideas@python.org/message/Q7WZ7FY3ZSINGMHPI6ULQA6L5MJZ6HL3/ > Code of Conduct: http://python.org/psf/codeofconduct/ > -- -Dr. Jon Crall (him)
_______________________________________________ Python-ideas mailing list -- python-ideas@python.org To unsubscribe send an email to python-ideas-le...@python.org https://mail.python.org/mailman3/lists/python-ideas.python.org/ Message archived at https://mail.python.org/archives/list/python-ideas@python.org/message/3SGCC2KR6CL2IUON7BENQBTNK5MWDJYO/ Code of Conduct: http://python.org/psf/codeofconduct/