2012-03-16 75 views
3

python關鍵字is應該用來代替==運算符根據python風格指南。關鍵字:is和==有什麼區別python

但是,它們並不總是與此處顯示的完全相同。爲什麼?實際的區別是什麼,什麼是正確的用法?

import unittest 

class testIS(unittest.TestCase): 
    def test_is(self): 
     self.assertEqual(1,1) 

if __name__ == '__main__': 
    unittest.main() 

其中一期工程......但下面不...

import unittest 

class testIS(unittest.TestCase): 
    def test_is(self): 
     self.assertEqual(1,1) 

if __name__ is '__main__': 
    unittest.main() 
+1

的可能重複的[在Python字符串比較:是對==](http://stackoverflow.com/questions/2988017/string-comparison-in-python-is-vs) – Mat 2012-03-16 07:11:35

+0

可能的重複[Python'=='vs'是'比較字符串','有時會失敗,爲什麼?](http:// stackoverflow。com/questions/1504717/python-vs-is-comparison-strings-is-failures-sometimes-why) – 2012-03-16 07:12:43

回答

5

將返回True如果兩個變量指向同一個對象,==如果對象簡稱由變量是相等的。

>>> a = [1, 2, 3] 
>>> b = a 
>>> b is a 
True 
>>> b == a 
True 
>>> b = a[:] 
>>> b is a 
False 
>>> b == a 
True 
+0

提供一個快速示例的標記爲最佳答案:) – jbbiomed 2012-03-17 00:42:00

7

==檢驗是否相等。兩個不同的對象可以相等。

is測試身份,即兩者是否指同一個對象。

+0

更好的是說'==' '測試身份。 – orlp 2012-03-16 07:23:07

+1

@nightcracker:不,使用含糊不清的術語* equality *實際上是非常敏感的,因爲相等的定義是由對象的類型定義的。除非您在用戶定義的類中重寫'__eq__',否則'=='會檢查標識,而不是值。 – 2012-03-16 07:34:47

+0

@AndréCaron:默認實現是什麼,是一種猜測,在Python中身份恰好是一個很好的猜測。但它絕不會改變它的語義含義,這是對價值平等的考驗。 – orlp 2012-03-16 07:37:04

0

Python關鍵字'is'檢查對象標識,而==操作符檢查值是否相等。例如:

>>> if Car1 is Car2: 
>>>  [do something...] 

此代碼測試分享幫助和CAR2指的是同一輛車,而

>>> if Car1 == Car2: 
>>>  [do something...] 

檢查分享幫助和CAR2是同等質量的,那就是如果他們是同一型號的,顏色等

爲此,__name__"__main__"返回false,因爲字符串"__main__"並存儲在__name__值實際上有兩個不同的字符串對象。因此,要檢查__name__字符串的值是否等於__main__,請使用==運算符。

0

測試兩個輸入是否實際上是同一個對象。這在內存中位於相同的地址。

==對其中一個輸入對象調用__ eq __方法。對象然後可以定義他們自己的方法並決定什麼是平等的,什麼不是。

2
if money_in_wallet is money_that_was_in_wallet(two_weeks_ago): 
    print("I still live with my parents and have no income or expenses") 
elif money_in_wallet == money_that_was_in_wallet(two_weeks_ago): 
    print("Good, my budget is exactly balanced") 
+0

哈哈,完美:-) – 2012-03-16 12:56:11

+0

真是太好笑了! – jbbiomed 2012-03-17 00:41:04

相關問題