On 3 June 2017 at 20:59, Daniel Bershatsky <bepshat...@yandex.ru> wrote: > Dear Python Developers, > > We have a potential idea for enhancing Python. You will find a kind of draft > bellow.
Thank you for taking the time to write this up! > Best regards, > Daniel Bershatsky > > > Abstract > ======== > > This PEP proposes the introduction of new syntax to create community > standard, > readable and clear way to defered function execution in basic block on all > control flows. > > Proposal > ======== > > There is not any mechanism to defer the execution of function in python. There is, thanks to context managers: import contextlib def foo(i): print(i) def bar(): with contextlib.ExitStack() as stack: stack.callback(foo, 42) print(3.14) bar() Now, defer is certainly pithier, but thanks to contextlib2, the above code can be used all the way back to Python 2.6, rather than being limited to running on 3.7+. I was also motivated enough to *write* ExitStack() to solve this problem, but even I don't use it often enough to consider it worthy of being a builtin, let alone syntax. So while I'm definitely sympathetic to the use case (otherwise ExitStack wouldn't have a callback() method), "this would be useful" isn't a sufficient argument in this particular case - what's needed is a justification that this pattern of resource management is common enough to justify giving functions an optional implicit ExitStack instance and assigning a dedicated keyword for adding entries to it. Alternatively, the case could be made that there's a discoverability problem, where folks aren't necessarily being pointed towards ExitStack as a dynamic resource management tool when that's what they need, and to consider what could be done to help resolve that (with adding a new kind of statement being just one of the options evaluated). Cheers, Nick. P.S. Nikolas Rauth has a more in-depth write-up of the utility of ExitStack here: https://www.rath.org/on-the-beauty-of-pythons-exitstack.html -- Nick Coghlan | ncogh...@gmail.com | Brisbane, Australia _______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/