1. 程式人生 > >python中,a=10.0 b=10.0 a is b 為什麽輸出是false

python中,a=10.0 b=10.0 a is b 為什麽輸出是false

als 實現 比較 說明 col python 浮點數 變量 lse

>>>a=10.0>>>b=10.0>>>a is bFalse為什麽當a=10,b=10時,a is b輸出的是True呢?

>>>a=10.0

>>>b=10.0
>>>a is b
False

為什麽當a=10,b=10時,a is b 輸出的是True呢?

a is b

比較的是變量a與變量b的內存地址是否相同,即

id(a)==id(b)

Python的內置函數id就是用來查看變量地址的

id(a)等於id(b)說明變量a和變量b指向的是同一個內存空間。

Python中整數、浮點數都是immutable,也就是創建以後不能改變內存空間的值,對變量重新賦值以後,相當於變量重新指向了另外一處內存空間。

a = 10
print id(a)
a = a + 1
print id(a) #id(a)的值會反生變化

這樣,多個變量指向相同的內存空間就不會有影響,反而節省了內存的占用。

然而具體是否相同值的變量就占有相同內存空間,完全有Python的實現方式決定。

當變量a與b的值到1000時,你會發現他們的內存空間又不一樣了

a = 1000
b = 1000
id(a) == id(b)
a is b

總的來說寫程序是一般不用關註變量的內存空間地址,也很少使用is命令

python中僅緩存簡單的整型,(-1,100)。這個a=10,b=10,指向相同的整型對象,但是a=10.0和b=10.0時,並沒有指向相同的浮點型對象。

python中,a=10.0 b=10.0 a is b 為什麽輸出是false