在我的测试代码中,为什么元组和空值的
我知道
但是为什么变量a、b没有像c、d那样创建并指向两个不同的
print
结果不同?似乎a、b指向相同的None
对象,但c、d指向不同的对象,尽管它们的值相同(都等于(a,b)
)。我知道
is
关键字检查的是对象背后的内容而不仅仅是比较值,例如==
。在这里我使用元组,因为我认为元组是不可变的,所以至少问题不在于对象是否可变。但是为什么变量a、b没有像c、d那样创建并指向两个不同的
None
对象呢?a=None
b=None
c=(1,2)
d=(1,2)
print(a is b)
print(c is d)
is
和==
的作用是完全相同的吗?顺便说一句,谢谢。 - Nicholas==
进行测试(或对象本身)就足够了,因为对象具有真和假的值。c = 1
将通过c == True
(最好直接使用c,如if c:...
),但不会通过c is True
。请注意,只有在您打算检查标识而不是相等性时才使用is
。 - Moses Koledoyea is b is c
不再被解析为(a is b) is c
了?我以为这只适用于普通的比较运算符。编辑:'a' in 'ab' in 'abc'
也是有效的。 - Eric()
中的项目,然后再计算其他项目。在链接比较操作时添加括号时需要更加小心。 - Moses Koledoyein
不在那个列表中,但仍然可以链接。 - Eric'ab'.__contains__('a') and 'abc'.__contains__('ab')
。从左到右进行评估。 - Moses Koledoye