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

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中可以与任何类一起使用,而只能与属于或实现的那些类一起使用。

  • 本文向大家介绍Python中关键字is与==的区别简述,包括了Python中关键字is与==的区别简述的使用技巧和注意事项,需要的朋友参考一下 本文以简单示例分析了python中关键字is与 ==的区别,供大家参考一下。 首先说明一下Python学习中几个相关的小知识点。 Python中的对象包含三要素:id、type、value 其中:id用来唯一标识一个对象,type标识对象的类型,value

  • 本文向大家介绍js中的undefined和 ReferenceError: xxx is not defined 有什么区别?相关面试题,主要包含被问及js中的undefined和 ReferenceError: xxx is not defined 有什么区别?时的应答技巧和注意事项,需要的朋友参考一下 是变量申明未赋值的初始值 是为声明变量的报错信息