a=999999
b=999999
if a is b:
print("yes")
else:
print("no")
以下代碼的答案是否定的。Python無法比較兩個值
爲什麼Python無法比較的事實,無論是值等於999999
a=999999
b=999999
if a is b:
print("yes")
else:
print("no")
以下代碼的答案是否定的。Python無法比較兩個值
爲什麼Python無法比較的事實,無論是值等於999999
正確的方法爲平等比較兩個值A和B inspite是:
a == b
當您使用is
時,您正在比較對象標識,而不是相等。
那麼爲什麼'is'適用於較低的值? –
@HabibAnsari因爲小的整數彙集,並在這種情況下身份檢查成功。請參閱此文章:https://davejingtian.org/2014/12/11/python-internals-integer-object-pool-pyintobject/ –
試試這個...!
a=999999
b=999999
if a == b:
print("yes")
else:
print("no")
您正在檢查兩個變量是否與is相同。你最有可能尋找==
a == b
那麼爲什麼'is'適用於較低的值,如4? –
因爲'了'*不*'B'然而'一個== B'如果對象A和B都同樣如此 – MattR
'被B'正在檢查(或a和b的內存位置是相同的),如果你想檢查是否有值相同,你有使用'=='而不是 –
我建議你打印'id(a)'和'id(b)'。 – YiFei