On 12 September 2017 at 03:32, João Matos <jcrma...@gmail.com> wrote:
> Hello,
>
> You're correct. The idea is to give nonlocal the same ability, redirect
> subsequent bindings if the variable doesn't exist.

The issue you're facing is that optimised local variables still need
to be defined in the compilation unit where they're locals - we're not
going to make the compiler keep track of all the nonlocal declarations
in nested functions and infer additional local variables from those.
(It's not technically impossible to do that, it just takes our already
complex name scoping rules, and makes them even more complex and hard
to understand).

So in order to do what you want, you're going to need to explicitly
declare a local variable in the scope you want to write to, either by
assigning None to it (in any version), or by using a variable
annotation (in 3.6+). Future readers of your code will thank you for
making the widget definitions easier to find, rather than having them
scattered through an arbitrarily large number of nested functions :)

Cheers,
Nick.

-- 
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/

Reply via email to