scared about refrences...

Nick Vatamaniuc vatamane at gmail.com
Mon Oct 30 18:37:09 EST 2006


I think you are afraid of references because you are not trusting your
own code. You are afraid it will do "magic" behind the scenes and mess
everything up.  One way around that is to simply write better code and
test often.

If everything was copied when passed around it would be pretty awful --
imagine passing around a 1Gb worth of data to a function...

In  Python all the primitives are copied and all other entities are
references. If you want to just copy a list you can :
1) use the list class: new_list=list(old_list)
2) use the [:] syntax: new_list=old_list[:]
3) if your list has nested lists, for example, the above methods will
not copy everything, so you need a deep copy -- copy.deepcopy()

Hope this helps,
Nick V.


SpreadTooThin wrote:
> I'm really worried that python may is doing some things I wasn't
> expecting... but lets see...
>
> if I pass a list to a function def fn(myList):
>
> and in that function I modify an element in the list, then does the
> callers list get modied as well.
>
> def fn(list):
>    list[1] = 0
>
> myList = [1, 2, 3]
> print myList
> fn(myList)
> print myList
>
> >>> [1,2,3]
> >>> [1,0,3]
>
> How can I avoid this?  In this case this is a really simplified example
> but the effects are the same...
> How do I specify or create deep copies of objects that may contain
> other objects that may contain other
> object that may contain other objects....




More information about the Python-list mailing list