Clarification on python intro
Edward Glowacki
glowack2@msu.edu
Tue, 9 May 2000 10:54:06 -0400 (EDT)
Thanks for fixing the carriage returns, I was about to make some really
smart-ass comment about that code "clarifying" anything at all! ;)
--
Edward Glowacki glowack2@msu.edu
Network Services
Michigan State University
On Tue, 9 May 2000, Alan Garrison wrote:
> For those at the meeting (or are currently learning python), there was
> a little confusion on my part about calling functions with mutable
> objects. I wrote some test code to clarify what Tim brought up:
>
> >>> # create three local lists (mutable objects) >>> loc1 = [1,2,3]>>>
> loc2 = ["a","b","c"]>>> loc3 = ["d","e","f"]>>> # create function to
> test mutability>>> def Dinsdale(arg1,arg2,arg3):... arg1[0] = "99"
> # first, change indexed value... arg1 = ["spam", "SPAM", "SPAM!!!"] #
> second, create new list instance... arg2 = [44,45,46] # first, create
> new list instance... arg2[0] = 55 # second, change indexed value...
> arg3 = "Assigning the argument to be a new type"... >>>
> Dinsdale(loc1,loc2,loc3) # call function with our locals>>> print
> loc1 # should have [0] index changed['99', 2, 3]>>> print loc2 #
> should not change['a', 'b', 'c']>>> print loc3 # should not
> change['d', 'e', 'f']>>>
>
> As you can see, function Dinsdale was passed three lists (mutable),
> but only loc1 was changed at all. Note the order of the arg#
> changes in the funciton. If I change an indexed part of the list
> first, it is changed outside the function. If I give it a whole
> new list (arg1 = ["spam", "SPAM", "SPAM!!!"]), or any other new
> object type (arg3 = "Assigning the argument to be a new type"),
> a new object is created in the function and the reference to the
> loc# object is lost (within the function at least). This is
> basically what Ben explained, so the above code should hopefully
> clarify things.
>
>
>
>
> _______________________________________________
> linux-user mailing list
> linux-user@egr.msu.edu
> http://www.egr.msu.edu/mailman/listinfo/linux-user
>