Pass by reference or by value?
Robert Dailey
rcdailey at gmail.com
Thu Aug 16 17:02:49 EDT 2007
Hi,
I previously created a topic named "Pass by reference or by value" where I
inquired on how python's function parameters work. I received a lot of nice
responses, however I'm still confused on the topic. Note that I come from a
C++ background to Python, so any comparisons to C++ would be very helpful.
I ran a few tests. There's two tests in particular I wanted to show you
guys:
------------------------------------------------------------------------------------------------
myvar = []
def changeme( param ):
param.append( "blah" )
print param
changeme( myvar )
print myvar
The above code yields the following output:
['blah']
['blah']
This means that the list passed in was modified by the function.
------------------------------------------------------------------------------------------------
Now test case 2:
myvar = 4
def changeme( param ):
param = 5
print param
changeme( myvar )
print myvar
The above code yields the following output:
5
4
This means that the integer passed in was NOT modified by the function.
------------------------------------------------------------------------------------------------
Between these two tests, both types passed in are mutable objects. I'm
having trouble figuring out what mandates an object to be changed from
within a function versus not. What is happening in test case 2 to cause it
to not be modified?
Thanks for reading guys. Hopefully one day I'll understand this lol.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20070816/e427cd9b/attachment.html>
More information about the Python-list
mailing list