Everything is an object in python - object class and type class

BartC bc at freeuk.com
Wed Jun 3 12:00:11 EDT 2015


On 03/06/2015 13:08, Marko Rauhamaa wrote:
> BartC <bc at freeuk.com>:
>
>> To 'variable' and 'type', you might need to add 'value' to make it more
>> complete.
>
> 'Value' and 'object' are indeed synonymous as long as you keep in mind
> that:
>
>      >>> -12 == -12
>      True
>      >>> -12 is -12
>      False
>
> IOW, the literal expression -12 happens to construct a fresh
> value/object each time CPython parses it.

That's a different matter. However, you appear to be wrong.

print (-12 is -12)

gives True. As does ("abc" is "abc"). I assume constructions for 
immutable values will do the same (([10,20,30] is [10,20,30]) gives 
False because the constructs are mutable, although it's difficult to see 
how in that form).

(This is on 2.7, 3.1 and PyPy. On 3.4.3, (-12 is -12) gives False as you 
say, although (12 is 12) gives True, so not even Python can make up its 
mind how it's supposed to work!)

3.4.3:

print (-12 is -12)                                     => False
print (12 is 12)                                       => True
print (20000000000000000000 is 20000000000000000000)   => True

The others all give True in all cases. It seems that older Python 
versions have a purer object model.

-- 
Bartc




More information about the Python-list mailing list