Python handles globals badly.

tdev at freenet.de tdev at freenet.de
Thu Sep 3 09:22:29 EDT 2015


Reflecting the answers I want to add following first:


I should have better started a new thread.
But now it is here, I want just clarify something before 
I move on (later) with repsonding.


I think this has lead to some confusing.


There are now two main topics in this thread.


First topic: 
"sharing globals between modules"
Where globals is meant as vars used throughout the app.

This is the topic why Skybuck starts the thread.
And yes I agree globals can be bad design
and it is solved via outsourcing to an extra module and used via imports.

I misinterpreted this topic a little by thinking 
the focus is more about the use of the badly "global" keyword
(in my point of view) and added therefore my post here as


Second topic: 
"Forced to use "global" for write-access inside functions 
is over-regulation and should be removed."

This topic has nothing todo with sharing globals.
It is about in the scope of a single module only.

When I have written globals in this topic 
I have meant and mean vars defined in a module outside 
functions and used inside function blocks.

Sorry if this has lead to confusion, but so long 
I have read docs I would say that these vars are 
often named as globals although I meant module vars.

Reason is that module scope is the highest
scope and often referred as the global scope.
That is also why I dislike the word "global" too.


I talk about this construct:

Sample "Bad":
module A
   _x = 0

   def y():
	global x
	_x=1


and I aim for - it would be nicer to allow for simplicity
writing this without the keyword "global"
and give this small responsibility ("write protection")
back to the developer:

Sample "Good":
module A
   _x = 0

   def y():
	_x=1


why - this I have tried and try to explain in my and your posts 
      in the hope a PEP will arise which frees me and hopefully
      a lot other developers getting forced to use "global"
      (If developers need this "global" - ok, but I and 
	hopefully more want not to be forced with that 
        code-contaminator, especially having a lot more vars)


Said that, I will not respond to comments about sharing globals



More information about the Python-list mailing list