2014-03-25 43 views
0

我聲明兩個變量如下(其中一個是另一個的反向):反轉和比較原始和改變的字符串

a = "test" 
b = "tset" # reverse of a 

我然後跑進其返回的以下值的解釋器這樣的:

>>> b[::-1] 
'test' # value returned 

正如您所見,它顛倒了與第一個變量a完全相同的字符串。 然而,當我執行該語句,結果都不太一樣:

a is b[::-1] 
False # returns false after executing above statement 

一個是 「測試」,所以是B [:: - 1]。那麼爲什麼這種情況不會評估爲True

回答

2

要檢查是否有「價值」的平等,你應該使用操作==

>>> a == b[::-1] 
True 

那麼,爲什麼它的條件不評估爲真?

is關鍵字用於比較對象身份;換句話說,如果對象是相同的。

+0

他們不是?它們都是字符串類型並具有相同的值。 –

+1

@JosephPotts:如果我有一個季度,而你有一個季度,季度可能是相等的('=='),但它們不一定是同一季度('is'),即使它們都是類型的硬幣並具有相同的價值。他們可能是,如果有人碰巧在她的遺囑中留下同一季度,但他們不需要。 – DSM

+1

@JosephPotts如果你想要一個詳細的解釋,你可以閱讀[這個答案](http://stackoverflow.com/questions/15541404/python-string-interning)。 – Christian