PyMyth: Global variables are evil... WRONG!

Steven D'Aprano steve+comp.lang.python at pearwood.info
Thu Nov 14 03:45:16 CET 2013


On Wed, 13 Nov 2013 18:10:59 -0800, Rick Johnson wrote:

> On Wednesday, November 13, 2013 5:42:24 PM UTC-6, Rhodri James wrote:
>> On Tue, 12 Nov 2013 02:06:09 -0000, Rick Johnson wrote:
>> > PyMyth: Global variables are evil... WRONG!
>> That's not a PyMyth.  It's a CompSciMyth, or to be more accurate a good
>> general Software Engineering guideline regardless of language.  Like
>> all guidelines it can be broken, but people who break it should do so
>> knowingly, aware that they have created potential problems for
>> themselves.
> 
> You speak as if using globals are inhabited by gremlins just wanting to
> get out and run a muck. There are no "inherent" problems in the global
> interface design except those that programmer inserts himself.
> 
> Real global variable interfacing is no different than python object
> member interfacing, or module interfacing, except that the latter two
> are encapsulated by inside a namespace, and the former (historically)
> are unprotected and available everywhere; hence the name "global" :-)

A fully-auto machine gun with a hair-trigger and no safety is no 
different from a single-barrel shotgun with a safety and a trigger lock! 
You can blow your foot off with both!

Yes, but in the first case you can do it by accident, while with the 
second you have to work hard to blow your foot off.


> So that renders this whole argument of "global gremlins" as FUD. The
> gremlins don't exist until the programmer creates them.

Wait... are you saying that software bugs only occur because the coder 
writes buggy software? I thought bugs came into existence via spontaneous 
generation, like viruses, bacteria, pigeons and Marine Corps sergeants.


> And i also want to point out the hypocrisy of Python's design. Python
> DOES have globals

Is that why it has a global keyword and a globals() function? Thanks for 
the information, I never would have worked that out without your keen 
insight.


-- 
Steven



More information about the Python-list mailing list