それでは、私たちが知っていることを見てみましょう:
- 演算子は、
is
演算子とは対照的に、値ではなく ID を比較し==
ます。 - Python は文字列リテラルをインターンし
"hello" is "hello"
ますTrue
。
だから私が理解していないのは、この動作です:
>>>'h' is input()
h
True
>>>'hj' is input()
hj
False
どちらも文字列リテラルではありませんが、単一の文字は同一としてカウントされますが、2 文字の文字列は、同一ではないという、私が期待する結果をもたらします。
input() 関数は文字列を動的に作成しているため、結果はインターンされません。これが'hj'
、動的に作成された'hj'
と が同一でない理由です。しかし、なぜ'h'
と dynamicが'h'
同一なのですか?
これは、Python が長さ 1 のすべての文字列をキャッシュ/インターンすることを意味しますか?