私はPython is
と==
演算子で遊んでいました。私が知る限り、演算子は2つのオブジェクトが同じidを持っているかどうかを調べますが、私の場合、2つの部分文字列が同じidを持っていても演算子はFalseを返します。ここで は、同じIDを使用する文字列でFalseを返します
#! /usr/bin/python3
# coding=utf-8
string = "HelloWorld"
print(id(string)) #140131089280176
print(id(string[0:5])) #140131089251048
print(id(string[-10:-5])) #140131089251048
print(string[0:5] == string[-10:-5]) #True
print(string[0:5] is string[-10:-5]) #False
サブストリングは、予想通り、元の文字列と同じIDを持っていないが、なぜオペレータは、同じIDを持つ2つのストリングとfalseを返すのですか?私の両方について
は、私は(あなたが一度に2つのスライスを作成するときにそれを行うことができない、Pythonは最初の例にメモリ内の同じスロットを再利用していると思いたい
#または割り当てた場合はすぐに参照解除されませんでした)。 – jonrsharpe