2017-09-29 26 views
-1
a=999999 
b=999999 
if a is b: 
    print("yes") 
else: 
    print("no") 

以下代碼的答案是否定的。Python無法比較兩個值

爲什麼Python無法比較的事實,無論是值等於999999

+2

因爲'了'*不*'B'然而'一個== B'如果對象A和B都同樣如此 – MattR

+1

'被B'正在檢查(或a和b的內存位置是相同的),如果你想檢查是否有值相同,你有使用'=='而不是 –

+0

我建議你打印'id(a)'和'id(b)'。 – YiFei

回答

1

正確的方法爲平等比較兩個值A和B inspite是:

a == b 

當您使用is時,您正在比較對象標識,而不是相等。

+1

那麼爲什麼'is'適用於較低的值? –

+2

@HabibAnsari因爲小的整數彙集,並在這種情況下身份檢查成功。請參閱此文章:https://davejingtian.org/2014/12/11/python-internals-integer-object-pool-pyintobject/ –

1

試試這個...!

a=999999 
b=999999 
if a == b: 
    print("yes") 
else: 
    print("no") 
1

您正在檢查兩個變量是否與is相同。你最有可能尋找==

a == b

+0

那麼爲什麼'is'適用於較低的值,如4? –