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 > increment(x) > assert x == 2 > > but that doesn't work in Python either. > That example is mightily flawed since Python's integers are immutable objects. 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 pass-by-reference behavior. -- http://mail.python.org/mailman/listinfo/python-list