根据python风格指南,python关键字is应该用来代替==操作符。
然而,它们并不总是做与这里所示完全相同的事情。为什么?实际的区别是什么,正确的用法是什么?
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()发布于 2012-03-16 15:11:29
如果两个变量指向同一个对象,则is将返回True;如果这两个变量引用的对象相等,则返回==。
>>> a = [1, 2, 3]
>>> b = a
>>> b is a
True
>>> b == a
True
>>> b = a[:]
>>> b is a
False
>>> b == a
True发布于 2012-03-16 15:12:23
==测试是否相等。两个不相同的对象可以相等。
is测试身份,即两者是否引用同一对象。
发布于 2012-03-16 17:25:17
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")https://stackoverflow.com/questions/9733257
复制相似问题