On Fri, 11 Sep 2015 10:35 am, Ian Kelly wrote: > On Thu, Sep 10, 2015 at 4:25 PM, <t...@freenet.de> wrote: [...] >> So the compiler knows the distiction between global and local already. > > As we've said before, it doesn't. The compiler's current rules are > fairly simple: > > 1) If it's in the function's argument list, it's an argument (and > therefore local). > 2) If it's explicitly declared global, then it's global. > 3) If it's never assigned within the function, then it's global.
Almost. If it's never assigned within the function, then it is looked up according to the non-local scoping rules: - closures and enclosing functions (if any); - globals; - builtins; in that order. > 4) Otherwise, it's local. "Otherwise" meaning "if it is assigned to", except that "del" counts as an assignment. That is: def spam(): del x makes x a local variable inside the function spam. There's also a bunch of specialised and complicated rules for what happens if you make a star import ("from module import *") inside a function, or call eval or exec without specifying a namespace. Both of these things are now illegal in Python 3. And lastly, in Python 3 only, there is also a nonlocal declaration which works like global except it applies only to closures and enclosing functions. >> Another proof about identation: >> The parser can recognise identation with tabs and spaces. > > You can use tabs *or* spaces. In Python 3. In Python 2, you can mix tabs *and* spaces, and Python will try to guess what you mean. This causes more trouble than it is worth, and is removed in Python 3. [...] > I really doubt that you're going to gain any traction with this one, > because the decision that was made with Python 3 was to make the > compiler *more* rigid about not mixing tabs and spaces, not less. Correct. [...] >> Who is responding or has responded? >> Extreme Programmers, Python-Hardliner, Python-Evangelists, ... . >> Presumably no core Python Programmers (wrting compiler and standard >> library stuff) > > Ad hominem. For the record, I am the author of the statistics module in Python 3.4, and Terry Reedy is the very active maintainer of IDLE. If I have missed anyone, my apologies. So, yes, there are core developers here. (Although not any of the senior core devs, as far as I know.) -- Steven -- https://mail.python.org/mailman/listinfo/python-list