On Wednesday, February 6, 2013 7:36:28 PM UTC-6, Ethan Furman wrote:
> As Michael Torrie pointed out, the 'global' keyword is needed:

Wrong. The global keyword is in fact NOT needed and something i consider to be 
another wart of the language (PyWart on this subject coming soon!). 

Now, whilst Micheal's advice is valid python code, i would strongly suggest 
against encouraging people to use the global keyword when they could simply 
declare the variable beforehand. I know what you are thinking:

""" But python does not /require/ us to declare global variables if we use the 
global keyword"""

Yes, i know. But i just hate to have variables created "magically" in the 
middle of execution! ESPECIALLY if these variables are going to be accessed 
from another module(s). *sniff-sniff* does anyone smell what i smell?

Listen. I want to know every variable and every CONSTANT that will exist in the 
module namespace, and i want to know these facts BEFORE i read anything else. 
So please declare them at the top of each module. 


Hierarchy of module code structure:

 0. shebang lines
 1. stdlib import statements
 2. 3rd party and dependency import statements
 3. CONSTANTS
 4. $globalVariables
 5. module functions
 6. module classes (bka: Object Definitions)
 7. Testing Area
 
So if you want to use "global variables" , (bka: Module level variables), then 
simply declare them with a None value like this:

globalVariable = None

But don't pat yourself on the back just yet! Place a little comment so the 
reader will understand that this variable is accessed from ANOTHER namespace.

sharedCursor = None # Set by "Class.blah"; Whored out to X,Y and Z!

In this manner i will not be blindsided by proper use of poor language features.
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to