On Saturday, 3 March 2018 23:52:34 UTC, Steven D'Aprano wrote: > I know that laziness and hubris are programmer virtues, but there is > still such a thing as *too much laziness*. RAII works in C++ where > instances are allocated in the stack, but even there, if you have an > especially long-lived function, your resources won't be closed promptly. > In Python terms: > > def function(): > x = open_resource() > process(x) > # and we're done with x now, but too lazy to explicitly close it > sleep(10000) # Simulate some more work. Lots of work. > return > # and finally x is closed (2.8 hours after you finished using it) > > The answer in C++ is "well don't do that then". The answer is Python is, > "don't be so lazy, just use a with statement".
The answer in C++ would be to say "don't be so lazy just put the x manipulation in a function or sub-block". The answer with Python + this PEP would be "don't be so lazy just put the x manipulation in a function or explicitly del x" ...no new syntax. > If you want deterministic closing of resources, with statements are the > way to do it. > > def function(): > with open_resource() as x: > process(x) > # and x is guaranteed to be closed What a palava! -- https://mail.python.org/mailman/listinfo/python-list