在Python中,以下两个相等测试是否等效?
n = 5
# Test one.
if n == 5:
print 'Yay!'
# Test two.
if n is 5:
print 'Yay!'
这是否适用于你要比较实例(a list say)的对象?
好的,这样可以回答我的问题:
L = []
L.append(1)
if L == [1]:
print 'Yay!'
# Holds true, but...
if L is [1]:
print 'Yay!'
# Doesn't.
因此,==
测试重视在哪里is
进行测试以查看它们是否是同一对象?
如果两个变量指向同一个对象,则返回True
;如果变量引用的对象相等,则返回=
。
>>> a = [1, 2, 3]
>>> b = a
>>> b is a
True
>>> b == a
True
# Make a new copy of list `a` via the slice operator,
# and assign it to variable `b`
>>> b = a[:]
>>> b is a
False
>>> b == a
True
在你的例子中,第二个测试只起作用,因为Python缓存小整数对象,这是一个实现细节。对于较大的整数,这不起作用:
>>> 1000 is 10**3
False
>>> 1000 == 10**3
True
字符串文本也是如此:
>>> "a" is "a"
True
>>> "aa" is "a" * 2
True
>>> x = "a"
>>> "aa" is x * 2
False
>>> "aa" is intern(x*2)
True
本文向大家介绍python中is和==的区别?相关面试题,主要包含被问及python中is和==的区别?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: is是用来判断两个变量引用的对象是否为同一个,==用于判断引用对象的值是否相等。可以通过id()函数查看引用对象的地址。
问题内容: 我最近遇到了这种语法,但我没有意识到两者之间的区别。 如果有人可以告诉我与众不同,我将不胜感激。 问题答案: 一个类可以自由选择以任何方式实现比较,并且可以选择与None进行比较意味着某种意义(这实际上是有道理的;如果有人告诉你从头开始实现None对象,那么你将如何获得它来比较True?反对自己?)。 实际上,由于自定义比较运算符很少见,因此差异不大。但是你应该使用般规则。
本文向大家介绍is和==的区别相关面试题,主要包含被问及is和==的区别时的应答技巧和注意事项,需要的朋友参考一下
问题内容: Swift提供了关键字(和)检查对象是否可以成功向下转换: 而且还提供了原文: 对于符合的类,这真的有很大不同吗? 问题答案: 是的, 这是有区别的:在Swift中可以与任何类一起使用,而只能与属于或实现的那些类一起使用。
问题内容: 我正在使用读取csv文件的两列,然后将值分配给字典。这些列包含数字和字母字符串。有时在某些情况下单元格为空。在我看来,应读取但应分配该字典条目的值。当然,由于它具有空值,因此更能描述一个空单元格,而nan只是说读取的值不是数字。 我的理解正确吗,和之间有什么区别?为什么分配而不是? 另外,我的字典检查是否有任何空单元格一直在使用: 但这给了我一个错误,说我不能使用此检查v。我猜这是因为
问题内容: 和之间有适用的区别吗? 从Python文档中: :返回字典的(键,值)对列表的副本。 :在字典的(键,值)对上返回迭代器。 如果我运行下面的代码,每个似乎都返回对同一对象的引用。我缺少任何细微的差异吗? 输出: 问题答案: 这是演变的一部分。 最初,构建了一个真正的元组列表,并将其返回。这可能会占用大量额外的内存。 然后,一般将生成器引入该语言,然后将该方法重新实现为名为的迭代器-生成