PyWart: Namespace asinitiy and the folly of the global statement

Chris Angelico rosuav at gmail.com
Fri Feb 8 01:25:34 EST 2013


On Fri, Feb 8, 2013 at 3:30 PM, Rick Johnson
<rantingrickjohnson at gmail.com> wrote:
> It is my strong opinion that all "unqualified" variables must be local to the containing block, func/meth, class, or module. To access any variable outside of the local scope a programmer MUST qualify that variable with the func, class, or module identifiers. Consider the following examples

Okay. Now start actually working with things, instead of just making
toys. All your builtins now need to be qualified:

__builtins__.print("There
are",__builtins__.len(self.some_list),"members in this list,
namely:",__builtins__.repr(self.some_list))

And your imports happen at module level, so they need extra qualification:

# file: example.py

import sys

def foo():
    __builtins__.print("My args were:",example.sys.argv)

Actually, you already ran up against this. Your example needs to become:

for x in __builtins__.range(100):
    # Increment the module level variable count.
    example.count += 1

Or are you going to make builtins and imports magically available as
PHP-style superglobals?

ChrisA



More information about the Python-list mailing list