On 12/22/2017 8:53 AM, Kirill Balunov wrote:
On Dec 20, 2017 22:43, "Kirill Balunov" <kirillbalu...@gmail.com> wrote:
Since PEP 526 -- Syntax for Variable Annotations <https://www.python.org/dev/peps/pep-0526/> was approved, in Python 3.6+ it is possible to provide type hint information in the form *x: int*, also the PEP says "However, annotating a local variable will cause the interpreter to always make it local to the scope and leaves the variable uninitialized".
It is unitialized only if you do not initialize it.
Therefore in Python 3.6+ it is syntactically legal to write: def outer(): x: int def inner(): nonlocal x x = 10 inner() print(x)
Why would you write the above instead of >>> def f(): x:int = 10 print(x) >>> f() 10
while the above snippet is semantically more equivalent to:
More equivalent than what?
def outer(): #x def inner(): nonlocal x x = 10 inner() print(x) Which is obviously a *SyntaxError: no binding for nonlocal 'x' found`*, sorry for the pun. Also there is nothing said about this style in PEP 8 and Python 3.6 docs. So should I consider this as a bug, or an implementation detail (side effect), or a wart, or a feature?
I don't understand the question. Maybe people on SO did not either. -- Terry Jan Reedy -- https://mail.python.org/mailman/listinfo/python-list