Re: scared about refrences...
- From: "SpreadTooThin" <bjobrien62@xxxxxxxxx>
- Date: 30 Oct 2006 13:10:47 -0800
Marc 'BlackJack' Rintsch wrote:
In <1162236136.367603.165180@xxxxxxxxxxxxxxxxxxxxxxxxxxxx>, 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()`.
This appears to be the right thing to do to me.. (but what do I know?)
I tried this which more closely resembles my project but this doesn't
work:
import array
import copy
class test:
def __init__(self):
self.a = array.array('H', [1, 2, 3])
self.b = ['a', 'b', 'c']
def dump(self):
print self.a, self.b
t = test()
t.dump()
def testit(x):
t = copy.deepcopy(x)
t.a[1] = 0
t.b[1] = 0
testit(t)
t.dump()
.
- Follow-Ups:
- Re: scared about refrences...
- From: Steven D'Aprano
- Re: scared about refrences...
- References:
- scared about refrences...
- From: SpreadTooThin
- Re: scared about refrences...
- From: Marc 'BlackJack' Rintsch
- scared about refrences...
- Prev by Date: Re: importing class
- Next by Date: Re: Python windows interactive.
- Previous by thread: Re: scared about refrences...
- Next by thread: Re: scared about refrences...
- Index(es):
Relevant Pages
|