On Sun, Apr 29, 2018 at 7:22 PM, Mikhail V <mikhail...@gmail.com> wrote: > On Sun, Apr 29, 2018 at 3:30 AM, Tim Peters <tim.pet...@gmail.com> wrote: > >> Time to note another subtlety: people don't _really_ want "a new >> scope" in Python. If they did, then _every_ name appearing in a
> If there is demand for this, how about just introducing a > derived syntax for the "auto-called" def block, say, just "def" without a > name: > > def : > global a > x = 1; y = 2 > a = x + y > print (a) > Or even better, it would be better to avoid overloading "global" or "return", and use dedicated prefix for variables that are pushed to outer scope. I think it would look way better for cases with multiple variables: def func(): state = 0 def: localstate1 = state + 1 localstate2 = state + 2 & localstate1 & localstate2 print (localstate1) print (localstate2) Prefix in assignment would allow more expressive dispatching: def func(): state = 0 def: localstate1 = state + 1 localstate2 = state + 2 & M = state + 3 & L1, & L2 = localstate1, localstate2 print (L1, L2, M) Imo such syntax is closest do "def" block and should be so, because functions have very strong association with new scope definition, and same rules should work here. Not only it is more readable than "with local()", but also makes it easier to edit, comment/uncomment lines. _______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/