* Cecilia Alm <[EMAIL PROTECTED]> [070416 07:45]: > OK, apologies if my terminology and wording was unfortunate and unclear. > > (Setting aside for now if this is preferred practice or not) In > regards to modifying a global mutable list/dictionary (for example > appending to a global list), the name does not need defined within the > local namespace, right? However, for example for a global integer > counter, the name would need to be defined in the local name space, as > shown by Andreas' previous example. Naturally. But you should not confuse these two operations. Rebinding (assigning) a name is a different beast than modifying an existing object.
t1.py: from t2 import x, test test() print x # prints [123] t2.py: x = [] def test(): x.append(123) Compare with this: t1.py: from t2 import x, test test() print x # prints 0 t2.py: x = 0 def test(): global x x = 123 And concerning your claim that adding a global is more readable for access, I'd like to point out, that if I need to see who uses "VarName", I usually just search for the string. If I need to see who rebinds "VarName", I search for "global VarName" => thus systematically adding global will make your code harder to understand for the typical developer. OTOH, module globals are seldom used, and usually frowned on. E.g. the python2.5 standard lib (>200K lines, 584 py files), uses exactly 104 distinct global statements. [EMAIL PROTECTED]:/usr/lib/python2.5> grep -r "^[ \t]*global " . | sed 's/[ \t][ \t]*/ /' | sort -u | wc -l 105 [EMAIL PROTECTED]:/usr/lib/python2.5> find . -name \*.py | xargs wc -l | tail -1 202106 insgesamt [EMAIL PROTECTED]:/usr/lib/python2.5> find . -name \*.py | wc -l 584 In practice I have seldom to use globals. Andreas _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor