Re: working with pointers
- From: Steven Bethard <steven.bethard@xxxxxxxxx>
- Date: Tue, 31 May 2005 13:13:00 -0600
Michael wrote:
if i do a=2 b=a b=0 then a is still 2!?
so when do = mean a reference to the same object and when does it mean make a copy of the object??
It *always* means a reference. It *never* makes a copy.
Although the terminology isn't quite right, you can think of all "variables" in Python being "references". Assignment statements in Python then simply change the object that a "variable" "points" to.
Your example with integers:
py> a = 2 py> b = a py> b = 0 py> a 2 py> b 0
A simlar example with lists:
py> a = [5, 7] py> b = a py> b = [] py> a [5, 7] py> b []
Of course, if you modify an object while two names are bound to it ("two variables hold pointers to it") then the modifications will be visible through either name ("either pointer"):
py> a = [5, 7] py> b = a py> a.pop() 7 py> a [5] py> b [5]
Note that since integers are immutable, I can't give you a direct example like this with integers, but try:
py> class I(int): .... pass .... py> a = I(42) py> a 42 py> b = a py> b 42 py> a.flag = True py> b.flag True py> a.flag = False py> b.flag False
So even with ints (or at least a mutable subclass of ints), modifications made to an object through one name ("reference") are also visible through other names ("references") to that object.
HTH,
STeVe .
- References:
- working with pointers
- From: Michael
- Re: working with pointers
- From: Steven Bethard
- Re: working with pointers
- From: Michael
- working with pointers
- Prev by Date: Re: working with pointers
- Next by Date: Re: Stupid Newbie Question Concerning CGI and Reading Forward Slashes
- Previous by thread: Re: working with pointers
- Next by thread: Re: working with pointers
- Index(es):