根据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()
答案 0 :(得分:7)
==
测试平等。两个不相同的对象可以相等。
is
测试身份,即两者是否都指向同一个对象。
答案 1 :(得分:5)
将返回True,如果变量引用的对象相等,则 == 。
>>> a = [1, 2, 3]
>>> b = a
>>> b is a
True
>>> b == a
True
>>> b = a[:]
>>> b is a
False
>>> b == a
True
答案 2 :(得分: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")
答案 3 :(得分:0)
退房......
http://docs.python.org/reference/expressions.html#not-in
......哪个州......
运算符is
和is not
测试对象标识:当且仅当x和y是同一个对象时,x是y才为真
答案 4 :(得分:0)
Python关键字'is'检查对象标识,而==运算符检查值是否相等。例如:
>>> if Car1 is Car2:
>>> [do something...]
此代码测试Car1和Car2是否指向同一辆车,而
>>> if Car1 == Car2:
>>> [do something...]
检查Car1和Car2的质量是否相同,即它们是否具有相同的型号,颜色等。
出于这个原因,__name__
是"__main__"
返回False,因为字符串"__main__"
和__name__
中存储的值实际上是两个不同的字符串对象。因此,要检查__name__
字符串的值是否等于__main__
,请使用==运算符。
答案 5 :(得分:0)
是测试两个输入实际上是否是同一个对象。它位于内存中的相同地址。
==在其中一个输入对象上调用 __ eq __ 方法。然后,对象可以定义自己的 __ eq __ 方法,并确定什么是相等的,什么不是。