私のテストコードでは、なぜタプルとNoneの結果がprint
で異なるのですか? a、bは同じオブジェクトNone
を指していますが、c、dは異なるオブジェクトを指していますが、その値は同じです(両方とも(a,b)
に等しい)。Pythonでは、Noneは一意のオブジェクトですか?
私は背後に横たわっているのではなくオブジェクトのis
キーワードをチェックしたばかり==
のような値とを比較することを知っています。そしてここで私はタプルが不変であると思うので、タプルを使用します。少なくとも、オブジェクトが可変であるか不変であるかは問題ではありません。
しかし、なぜ変数、bはcと二つの異なるNone
オブジェクトに作成し、ポイントはありません、タプルしてくださいdは?
a=None
b=None
c=(1,2)
d=(1,2)
print(a is b)
print(c is d)
念のために、シングルトンオブジェクトのためにあなたは、None、TrueとFalse、基本的には 'is'と' == '仕事全く同じように言いましたか?ありがとうBTW。 – Nicholas
ブール値の場合、真偽値と偽値を持つオブジェクトとしてテスト(またはオブジェクト自体)に '=='を使用すれば十分です。 'c = 1'は' c == True'を渡します( 'if c:...'のように直接cを使う方が良いですが 'cは真'ではありません)。アイデンティティをチェックしようとする場合にのみ 'is'を使用するように注意してください。 –
待ってください。' 'aがbであるときはいつ' '(a is b)がcであるか '私はそれが通常の比較演算子にしか適用されないと考えました。 **編集:** ' '' で 'AB' abc''」内には、有効なすぎ – Eric