In <[EMAIL PROTECTED]>, SpreadTooThin
wrote:

> I'm really worried that python may is doing some things I wasn't
> expecting... but lets see...

Expect that Python never copies something if don't ask explicitly for a
copy.

> 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...

In this case:

def fn(lst):
    lst = list(lst)
    lst[1] = 0


> 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....

See the `copy` module especially `copy.deepcopy()`.

Ciao,
        Marc 'BlackJack' Rintsch

-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to