说说Python 中 is 和 == 的区别?

公众号新增加了一个栏目,就是每天给大家解答一道Python常见的面试题,反正每天不贪多,一天一题,正好合适,只希望这个面试栏目,给那些正在准备面试的同学,提供一点点帮助!

小猿会从最基础的面试题开始,每天一题。如果参考答案不够好,或者有错误的话,麻烦大家可以在留言区给出自己的意见和讨论,大家是要一起学习的 。

废话不多说,开始今天的题目:

问:说说Python 中 is 和 == 的区别?

答:讲is和==这两种运算符区别之前,首先要知道Python中对象包含的三个基本要素,分别是:id(身份标识)、type(数据类型)和value(值)。

is 和 == 都可以进行对象比较判断作用的,但对对象比较判断的内容并不相同。下面来看看具体区别在哪?

is 比较的是两个对象的id值是否相等,也就是比较两个对象是否为同一个实例对象,是否指向同一个内存地址。

== 比较的是两个对象的内容是否相等,默认会调用对象的 __eq__ 方法,== 是python标准操作符中的比较操作符,用来比较判断两个对象的值是否相等。

下面分别来说说几种数据类型is的比较情况:


a = 1 #a和b为数值类型
b = 1
print(a is b) #True
print(id(a)) #2037015728
print(id(b)) #2037015728

a = '程序IT圈' #a和b为字符串类型
b = '程序IT圈'
print(a is b) #True
print(id(a)) #24843328
print(id(b)) #24843328

a = (1,2,3) #a和b为元组类型
b = (1,2,3)
print(a is b) #True
print(id(a)) #15001280
print(id(b)) #15001280

a = [1,2,3] #a和b为list类型
b = [1,2,3]
print(a is b) #False
print(id(a)) #15004567
print(id(b)) #14796359

a = {'name':'小明','age':25} #a和b为dict类型
b = {'name':'小红','age':24}
print(a is b) #False
print(id(a)) #15006478
print(id(b)) #14790408

a = set([1,2,3])#a和b为set类型
b = set([1,2,3])
print(a is b) #False
print(id(a)) #15009578
print(id(b)) #14793567

从上面代码可看出,只有数值型、字符串型和元组的情况下,a is b才为True,如果是list,dict或set型时,a is b为False。

不可变数据(3个):Number(数字)、String(字符串)、Tuple(元组)。

可变数据(3个):List(列表)、Dictionary(字典)、Set(集合)。

说说Python可变与不可变数据类型?

如果对于参考答案有不认同的,大家可以在评论区指出和补充,欢迎留言!

1-25、Python面试1-25题汇总

26、说说Python中的类型转换有哪些?

27、Python中实现二分查找的2种方法?

28、说说Python中的lambda表达式?

29、说说Python中的反射是什么?

30、Python删除list重复元素有几种方法?

31、Python中__new__和__init__的区别?

32、说说Python中的help()和dir()函数?

33、说说Python中的GIL是什么?

34、说说提高Python运行效率的技巧?

35、说说对于Python装饰器的理解?

36、说说Python中的异常捕获?

37、Python的单例模式有几种实现方式?

38、Python中的魔法方法有哪些?
39、Python实现自省的方法有哪些?
40、Python中 *args和**kwargs 的含义?
41、说说Python中的正则表达式?
42、Python如何实现斐波那契数列?

关注小猿公众号,每天学习一道题

(0)

相关推荐

  • 说说你知道的Python3和Python2之间的区别?

    Python是一门语法简洁优美,功能强大无比,应用领域非常广泛,具有强大完备的第三方库的一门强类型的动态,可移植,可扩展,可嵌入的解释型编程语言 编码 Python2中字符的类型: str:已经编码后 ...

  • Python中is与==的使用区别详解

    Python中is与==的使用区别详解

  • 面试题-python 浅拷贝和深拷贝(copy模块)

    前言 面试的时候经常会问到深拷贝和浅拷贝,那么python的深拷贝和浅拷贝有什么区别呢? 思考题 先来看 2 个简单的案例, 对元素 a/aa 重新赋值一个新的变量 b/bb 后,改变原来 a/aa ...

  • WTF Python: 开启你的懵逼模式

    What the f*ck Python? Python很流行很易学,但有时,Python代码片段的结果可能让小白们直接懵逼,现在大邓跟你一起开启懵逼模式 wtf-1 开胃菜hash some_dic ...

  • 集锦 | 53个Python面试问题 答案打包带走

    作者丨Chris 来源丨AI科技大本营(ID:rgznai100) 链接丨https://towardsdatascience.com/53-python-interview-questions-an ...

  • Python中Json和dict区别对比?入门分享!

    最近有人问小编说:Python开发中字典和Json的区别是什么?关于这个问题,小编通过下文为大家介绍一下. 什么是字典? 字典是一种数据结构,而json是一种数据格式就会有一些形式上的限制,比如jso ...

  • Python中tuple和list的区别?基础学习!

    想必大家都知道,Python数据类型有很多种,其中有两个对象的写法非常相似,它就是tuple元组和list列表,让人傻傻分不清楚.那么你知道Python中tuple和list有什么区别吗?我们来看看具 ...

  • Python中classmethod和staticmethod的区别

    今天来写一下装饰器classmethod和staticmethod这两个关键词.一般实现书写类结构体方法有三种,分别是实例方法(instancemethod).classmethod.staticme ...

  • Python字典中items()和iteritems()区别

    字典介绍: 一.字典概念 字典是Python语言中唯一的映射类型. 映射类型对象里哈希值(键,key)和指向的对象(值,value)是一对多的的关系,通常被认为是可变的哈希表. 字典对象是可变的,它是 ...

  • 说说Python中search()和match()的区别?

    公众号新增加了一个栏目,就是每天给大家解答一道Python常见的面试题,反正每天不贪多,一天一题,正好合适,只希望这个面试栏目,给那些正在准备面试的同学,提供一点点帮助! 小猿会从最基础的面试题开始, ...

  • Python中read、readline和readlines的区别?

    公众号新增加了一个栏目,就是每天给大家解答一道Python常见的面试题,反正每天不贪多,一天一题,正好合适,只希望这个面试栏目,给那些正在准备面试的同学,提供一点点帮助! 小猿会从最基础的面试题开始, ...

  • 说说Python中的__new__和__init__的区别?

    公众号新增加了一个栏目,就是每天给大家解答一道Python常见的面试题,反正每天不贪多,一天一题,正好合适,只希望这个面试栏目,给那些正在准备面试的同学,提供一点点帮助! 小猿会从最基础的面试题开始, ...

  • Python中迭代器和生成器的区别?

    公众号新增加了一个栏目,就是每天给大家解答一道Python常见的面试题,反正每天不贪多,一天一题,正好合适,只希望这个面试栏目,给那些正在准备面试的同学,提供一点点帮助! 小猿会从最基础的面试题开始, ...

  • Python中深拷贝与浅拷贝的区别?

    公众号新增加了一个栏目,就是每天给大家解答一道Python常见的面试题,反正每天不贪多,一天一题,正好合适,只希望这个面试栏目,给那些正在准备面试的同学,提供一点点帮助! 小猿会从最基础的面试题开始, ...