所以,讓我們通過我們所知道的:爲什麼Python將單個字符串計數爲相同?
- 的
is
運營商身份進行比較,而不是價值,而不是在==
運營商。 - Python實習生字符串文字,所以
"hello" is "hello"
是True
。
所以我不明白的是這種行爲:
>>>'h' is input()
h
True
>>>'hj' is input()
hj
False
單個字符被算作是相同的,即使他們不是兩個字符串常量,而兩個字符的字符串給我我期望的結果是不一致的。
由於input()函數動態地創建一個字符串,所以結果不會被攔截,這就是爲什麼'hj'
和動態創建的'hj'
不相同的原因。但爲什麼'h'
和動態'h'
相同?
這是否意味着Python緩存/實習生所有長度爲1的字符串?
不是重複! – Aerovistae
@Aerovistae:你能解釋爲什麼不呢? – Eric
另一個答案沒有深入研究爲什麼單個字符串在所有情況下都是相同的,即使在動態創建時,這也是問題。另一個答案解釋了字符串身份測試通常如何工作。 – Aerovistae