文字列が通常の方法でメモリに残る場合、このケースをどのように説明しますか?
s1=';;'
s2=';;'
s1==s2,s1 is s2
(True, False)
s1=';'
s2=';'
s1==s2,s1 is s2
(True, True)
文字列が通常の方法でメモリに残る場合、このケースをどのように説明しますか?
s1=';;'
s2=';;'
s1==s2,s1 is s2
(True, False)
s1=';'
s2=';'
s1==s2,s1 is s2
(True, True)
==
演算子は、値が等しいかどうかをチェックします。
is
両方のエンティティが同じメモリ位置を指しているかどうかを確認します。
ここで、エンティティが のように本質的に同じオブジェクトである場合、s1=s2=";;"
Trues1 is s2
になります。これは簡単に理解できます。
しかし、私たちは直感的に、別々に初期化された 2 つのエンティティは異なるメモリ位置を持つと考えています。しかし、それは必ずしも真実ではありません。
パフォーマンスを向上させるために、Python は、int (ある範囲の値の場合)、string (再びある範囲の場合) を作成するときに、既存のオブジェクトへの参照を返すだけです。