当前位置: 首页 > 面试题库 >

Python-“=”和“is”有区别吗?

孟华晖
2023-03-14
问题内容

在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文档中: :返回字典的(键,值)对列表的副本。 :在字典的(键,值)对上返回迭代器。 如果我运行下面的代码,每个似乎都返回对同一对象的引用。我缺少任何细微的差异吗? 输出: 问题答案: 这是演变的一部分。 最初,构建了一个真正的元组列表,并将其返回。这可能会占用大量额外的内存。 然后,一般将生成器引入该语言,然后将该方法重新实现为名为的迭代器-生成