xavier.morel at masklinn.net
Tue Dec 13 23:21:02 CET 2005
Steven D'Aprano wrote:
> name = "spam spam spam spam"
> the value of the variable "name" is a pointer, and not a string. Riiight.
Yes, it's a reference to an object of type string holding the value
<spam spam spam spam>
> def increment(n):
> """Add one to the argument changing it in place."""
> # In Pascal, I would need the var keyword to get this behaviour,
> # but Python is call by reference so all variables are passed
> # by reference.
> n += 1
> x = 1
> assert x == 2
> but that doesn't work in Python either.
That example is mightily flawed since Python's integers are immutable
Here, python creates a new integer object of value "n+1" and binds the
_local_ name "n" to this new object. n isn't bound to it's initial
object anymore (the one x is bound to), and therefore can't modify it.
Now use a mutable type instead of an immutable int and you'll notice a
More information about the Python-list