Now I want reflecting the latest answers:
I have the position of a high-level view (cause of lack of Python knowledge internals and compiler stuff, but also cause I think a language should be as far as possible user-friendly without knowing too much internals, and yes clearly cause of knowing OO-languages where I do not need such code-contamination) So, my high-level understanding of the "global"-keyword so far is: Give write access to a global var if this is set to this var inside a current code block. And this specific syntax construction is probably defined not cause it is really needed but cause it is assumed to help the developer avoiding mistakes, which I think is too much over-regulation. But from the answers given I maybe have to rethink about the global keyword. It seems to be an absolute need from low-level point of view - meaning the designer had no other choice as to invent the keyword "global": Two main reasons for the need of keyword "global" have been posted: Compiler - Python compiler or compiler at all cannot hide this from the developer? (It seems really a scripting problem. PHP has it, LUA has it vice versa, ...) Although I cannot really believe it, that technical reasons lead to this design. E.g recognizing if it is local or global: If this would be under the developer responsibility than this is simply achieved by giving well-written var names. And a compiler can surely recognize if a defined var xxx outside is not a var yyy inside a function. Or does anyone really name a global var xxx and a function var xxx? I am sure no one at all will do it. I dont want read such a code. Function calls (?) - I have to admit I did not really get the problematic from the sample provided by Chris Angelico. What I can see or mean to see is: it has nothing to do with global-keyword from the high level point of view: give write access, probably to the vars word and otherword. And yes, I see the vars independant. And cause you set no "global" they are simple local vars (readable+writeable) This is more about let me assume function call stack and closures things(?) which I think is handled automatically. But as said - here I cannot really respond. This have to be answered from more experienced users. My conclusion: -------------- My intention was to bring this into discussion and see what comes out and see what are the reasons for this keyword. I am not the user who can open the PEP, but maybe the community out decides to do so. But if this two problems really exists from low-level point of view, then ok, there is no other way than to use this keyword "global". I have not the experience to answer that. I can accept low-level problems if so. But then I ask you from high-level point of view (if my high level view is correct at all): Would you remove this keyword if it would be technically possible or is good for you from high level point of view to have a keyword "global"? My answer is clear: remove it. [The same e.g. with switch statement: add it] Then this is my question now! Thanks. -- https://mail.python.org/mailman/listinfo/python-list