lists: += vs. .append() & oddness with scope of variables

Scott David Daniels scott.daniels at acm.org
Sun Mar 5 11:34:15 EST 2006


Duncan Booth wrote:
> Sandro Dentella wrote:
> 
>> I'd like to understand why += operator raises an error while .append()
>> does not. My wild guess is the parses treats them differently but I
>> cannot understand why this depends on scope of the variables (global
>> or class variables):
>....
> 
> Any assignment to a variable within a function means that the name to which 
> you are assigning is regarded as a local variable (unless you use the 
> 'global' statement to override that). += is a form of assignment, calling 
> the append method is not an assignment.
> 
> The solution here is simply to use 'global a' to tell the compiler that you 
> meant to assign the the global variable rather than creating a new local 
> variable.

As Duncan knows but forgot to mention, eric.append(spam) doesn't write
the variable eric, it simply manipulates the object that eric names.

-- 
-Scott David Daniels
scott.daniels at acm.org



More information about the Python-list mailing list