is 和 == 的區別
首先要知道python中物件包含的三個基本要素,分別是:id(身份標識)、type(資料型別)和value(值)。
==是python標準操作符中的比較操作符,用來比較判斷兩個物件的value(值)是否相等,例如下面兩個字串間的比較:
>>
> a =
'cheesezh'
>>
> b =
'cheesezh'
>>
> a == b
true
is也被叫做同一性運算子,這個運算子比較判斷的是id是否相同。可以通過對下面幾個list間的比較看出差異性:
>>
> x = y =[4
,5,6
]>>
> z =[4
,5,6
]>>
> x == y
true
>>
> x == z
true
>>
> x is y
true
>>
> x is z
false
我們可以對x、y、z的id進行列印
>>
>
print
id(x)
30753555
>>
>
print
id(y)
30753555
>>
>
print
id(z)
30753702
可以看出x和y的id是相同的,而z雖然和x、y的值相同,但是id卻不同。
因此可以得知:
1、is的判斷是需要對數值以及id進行比較,只要有一者不同則為false;
2、==的判斷僅僅針對數值的判斷。
以上僅為作者個人觀點,一切以實際操作為準!
拓展:當比較tuple,list,dict或set又會怎樣呢?
成員運算子 與指標運算子 的區別
在間接引用的時候,例如指標 p 就用p member如果是直接引用或者類本身或者內部引用就用.比如classa.member 或classtype copyconstructor classtype classa 要確定是用 還是用 必須先確定它前面的是乙個物件還是乙個物件指標。a a,p p a ...
位運算子與邏輯運算子的區別
首先介紹一下邏輯運算子 運算子用法 含義op1 op2 邏輯與op1 op2 邏輯或 op 邏輯非 然後我們在看一下邏輯運算子的使用規則 op1op2 op1 op2 op1 op2 op1 true true true true false true false false true false ...
NOT運算子與 運算子
6.4.2 not運算子與 運算子 對於簡單的條件查詢,not運算子與 運算子的功能幾乎沒有什麼區別,那麼not運算子的優勢體現在 呢?答案是它可以與其他運算子組合使用,這一點是 運算子所不能實現的。在6.4.1節已經介紹了not運算子與in運算子組合使用的例子,下面給出乙個not運算子與betwe...