Python学習ノート(七)—Python中isと=(is notと!=)の違い
5585 ワード
転載は出典を明記してください.http://blog.csdn.net/sinat_1449739/articale/details/78311832本文はShawpooのコラムから来ました.
【Python学習ノートコラム】:http://blog.csdn.net/column/details/17658.html
Pythonには多くの演算子があります.ここでは主に
具体的な例をいくつか紹介します.整数の比較: 文字列の比較: リストの比較: tupleの比較: dict(辞書)の比較: setの比較: 割当後比較(すべてのデータタイプに適合)し、リストを例として:
上記の例では、2つの演算子の比較結果とメモリアドレスをそれぞれ印刷したので、次のようにすることができます.各オブジェクトの値が同じであれば、x==yの値は必ずTrueとなります. オブジェクトのタイプが整数または文字列で値が同じであれば、x==yとx isyの値はTrueである.(テストされた浮動小数点型の数値は、正浮動小数点のみがこの法則に合致し、負浮動小数点数は一致しない); list、tuple、dict、setの値が同じなら、x is yはFalseです. x==yとx!=yの値は反対で、x is yはx is not yの値と反対です. 以上の結論は、変数の直接割当または変数相互割当値の比較に対してのみ、2つの変数の間でコピーして比較していません.
後はPythonの中の浅いコピーで和深のコピーを補充します.(更新されました.Pythonの割当値、浅いコピー和深コピー(図を含む)
その他の読書
Pythonの演算子
【Python学習ノートコラム】:http://blog.csdn.net/column/details/17658.html
Pythonには多くの演算子があります.ここでは主に
is
と==
の2つの演算子の違いを記録します.id()
関数は、オブジェクトのメモリアドレスを確認するものです.各オブジェクトには対応するメモリアドレスがあります.>>> id(1)
1543816880
>>> id("abc")
2880674151480
>>> id([1, 2, 3])
2880703493384
is
は、2つの変数参照オブジェクトが同じかどうかを判断するために使用され、==
は、参照変数の値が等しいかどうかを判断するために使用される.Javaのequal()と==に似ています.逆に、is not
は、2つの変数が異なるオブジェクトから参照されているかどうかを判断するために用いられ、!=
は、参照変数の値が異なるかどうかを判断するために用いられる.具体的な例をいくつか紹介します.
x = 5
y = 5
print(x == y)
print(x is y)
print(id(x))
print(id(y))
:
True
True
1543817008
1543817008
x = "abc"
y = "abc"
print(x == y)
print(x is y)
print(id(x))
print(id(y))
:
True
True
2039623802136
2039623802136
x = [1, 2, 3]
y = [1, 2, 3]
print(x == y)
print(x is y)
print(id(x))
print(id(y))
:
True
False
2194144817928
2194144817288
x = (1, 2, 3)
y = (1, 2, 3)
print(x == y)
print(x is y)
print(id(x))
print(id(y))
:
True
False
2699216284336
2699216284480
x = {"id": 1, "name": "Tom", "age": 18}
y = {"id": 1, "name": "Tom", "age": 18}
print(x == y)
print(x is y)
print(id(x))
print(id(y))
:
True
False
3005783112296
3005783112368
x = set([1, 2, 3])
y = set([1, 2, 3])
print(x == y)
print(x is y)
print(id(x))
print(id(y))
:
True
False
2206005855176
2206006414696
x = [1, 2, 3]
y = x
print(x == y)
print(x is y)
print(id(x))
print(id(y))
:
True
True
2539215778568
2539215778568
締め括りをつける上記の例では、2つの演算子の比較結果とメモリアドレスをそれぞれ印刷したので、次のようにすることができます.
後はPythonの中の浅いコピーで和深のコピーを補充します.(更新されました.Pythonの割当値、浅いコピー和深コピー(図を含む)
その他の読書
Pythonの演算子