Sion Arrowsmith wrote:
> Michael Sparks  <[EMAIL PROTECTED]> wrote:
> >def bar():
> >    global x
> >    x[0] += " another"
> >    print id(x[0])
>
> ... and for bonus marks, explain why the "global x" in this function
> is not required.

Because x does not appear as an LHS in bar(), just about the first
thing I learned here.

More seriously, I can and do use lots of globals. In the tokenizer I'm
writing, for example, all the token types(COMMENT_EOL = 0,
CONSTANT_INTEGER = 1, ...) are global constants. The text to be
tokenized is a global variable. (Actually, the text is unchanging once
the Tok object is created, so this "variable" may be another
constant.) Passing global constants to functions is a case of CPU
abuse.

Structured purists gave globals a bad rap, years ago. Time to stick up
for them. They're good citizens. Don't blame them if some dumb coder
abuses them. It's not their fault.
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to