Python基础 is与==的区别

栏目: Python · 发布时间: 7年前

内容简介:本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章。在编程中我们经常会用到“is”和“==”来表示判断,那么我想问大家一个问题为什么python会出现两个“表面”意思相近的语句呢?

欢迎点击「算法与编程之美」↑关注我们!

本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章。

在编程中我们经常会用到“is”和“==”来表示判断,那么我想问大家一个问题为什么 python 会出现两个“表面”意思相近的语句呢?

其实虽然他们“表面”上相近,但是本质的区别还是很大的。首先我们来看几行代码,看看大家能不能看出其中的奥妙。

Python基础 is与==的区别

从上图我们可以看出“is”和“==”有的时候返回值是不同的,所以它俩的用法是有区别的,要怎样区分它们呢?

我们在这里介绍python的一个内置函数“id(object)”

id(object)函数作用:

id(object)函数是返回对象object在其生命周期内位于内存中的地址,id函数的参数类型是一个对象。

讲到这里大家可能已经猜出来它们的区别了吧,没错区别就在于数据的储存位置不一样。细心的小伙伴可能会发现“e”“f”和“g”“h”的值两两分别相等且都为“int”类型,“is”返回的信息却不一样,这是为什么呢?

其实这是python的一个储存数据机制的问题,为了提高内存利用效率对于一些简单的对象,如一些数值较小的int对象,字符串对象等,python采取重用对象内存的办法。讲到这里我们就用“id”函数来验证一下吧。

Python基础 is与==的区别

根据id()函数的返回值我们可以得到数据储存地址,从而判断“is”的返回值是True函数False。

根据以上的总结,我简单概括一下“is”和“==”的区别:

is:比较两个实例对象是不是完全相同,它们是不是同一个对象,占用的内存地址是否相同。(即值与id都相等)

==:比较两个对象的内容是否相等,即内存地址可以不一样,内容一样就可以了。即比较值是否相等。

END

主  编   |   张祯悦

责  编   |   官学琦

where2 go 团队

   

微信号:算法与编程之美          

Python基础 is与==的区别

长按识别二维码关注我们!

温馨提示: 点击页面右下角 “写留言”发表评论,期待您的参与!期待您的转发!


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Blog Design Solutions

Blog Design Solutions

Richard Rutter、Andy Budd、Simon Collison、Chris J Davis、Michael Heilemann、Phil Sherry、David Powers、John Oxton / friendsofED / 2006-2-16 / USD 39.99

Blogging has moved rapidly from being a craze to become a core feature of the Internetfrom individuals sharing their thoughts with the world via online diaries, through fans talking about their favori......一起来看看 《Blog Design Solutions》 这本书的介绍吧!

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具