A certainl part of an if() structure never gets executed.

Νίκος support at superhost.gr
Mon Jun 17 01:17:48 EDT 2013


On 16/6/2013 9:53 μμ, R. Michael Weylandt wrote:
> On Sun, Jun 16, 2013 at 2:47 PM, Ferrous Cranus <support at superhost.gr> wrote:
>> On 16/6/2013 2:13 μμ, Jussi Piitulainen wrote:
>>>
>>> If, instead of the above, you have
>>>
>>> a = 6
>>> b = a
>>> b = 5
>>>
>>> you will find that b == 5 and a == 6. So b is not the same as a. Else
>>> one would have changed when the other changed. I would say that a and
>>> b are different variables. They had the same value, briefly.
>>
>>
>> If they were different variables then they would have different memory
>> addresses and they would act like two different objects.
>>
>> But... both a and b are for a fact mappings for the same memory address as
>> seen form the following command.
>>
>>>>> id(a) == id(b)
>> True
>>
>> They are like the same object with 2 different names.
>
> This will depend on when the test is run:
>
> a = 6
> b = a
> a is b # True
>
> b = 5
> a is b # False
>
> The latter is false because the binding of "b" to the int 6 was broken
> in order to bind b to the int 5.

Very surprising.
a and b was *references* to the same memory address, it was like a 
memory address having 2 names to be addresses as.

b = a name we use to address some memory location, do we agree on that?

So, b = 6, must have changed the stored value of its mapped memory 
location, but given you example it seems its changing the mapping of b 
to some other memory address.

I don't follow its act of course.

-- 
What is now proved was at first only imagined!



More information about the Python-list mailing list