Any suggestions? Thank you. With kind regards, -gdg
On Dec 20, 2017 22:43, "Kirill Balunov" <kirillbalu...@gmail.com> wrote: > I've asked the same question on StackOverflow, but it seems to me that it > is opinion based and will be ignored. So I ask for advice here: > > 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". Therefore in Python 3.6+ it is syntactically legal to > write: > > def outer(): > x: int > def inner(): > nonlocal x > x = 10 > inner() > print(x) > > while the above snippet is semantically more equivalent to: > > 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? > > To clarify the purpose of the question - we can not come to a consensus > and I would like to hear your opinion and possible pitfalls, if any, if we > choose to use this form in our codebase. > > With kind regards, -gdg > > > -- https://mail.python.org/mailman/listinfo/python-list