在python中,is检查两个对象是否是同一个对象,而==检查他们是否相等.

str1 = 'yangshl'
str2 = 'yang' + 'shl'
print('str1 == str2:', str1 == str2)
print('str1 is str2:', str1 is str2)
print("id(str1):", id(str1))
print("id(str2):", id(str2))

输出结果是:

str1 == str2: True
str1 is str2: True
id(str1): 17102416
id(str2): 17102416

问题:str1 是 一个对象吗??从id上看,的确是一个。

one = 'yang'
two = 'shl'
str3 = one+two
print('str1 == str3:', str1 == str3)
print('str1 is str3:', str1 is str3)
print("id(str1):", id(str1))
print("id(str3):", id(str3))

的结果是:

str1 == str3: True
str1 is str3: False
id(str1): 17102416
id(str3): 17102528

str3的计算结果明明是 yangshl。但是它和yangshl是不同的对象,但是value是相同的。

str4 = str('yangshl')
str5 = str('yangshl')
print('str4 == str5:', str4 == str5)
print('str4 is str5:', str4 is str5)
print("id(str4):", id(str4))
print("id(str5):", id(str5))

结果是:
str4 == str5: True
str4 is str5: True
id(str4): 17102416
id(str5): 17102416

java中会认为是不同的对象。但是在python中这说明使用 str和字符串直接量是一个对象。

如果比对list呢?

list1 = [1]
list2 = [1]
print('list1 == list2:', list1 == list2)
print('list1 is list2:', list1 is list2)
print("id(list1):", id(list1))
print("id(list2):", id(list2))

结果是:
list1 == list2: True
list1 is list2: False
id(list1): 16919944
id(list2): 16920520

所以如果你要比较两个值是否相同就用==,如果比较是否是同一个对象就用is。

其实python中的is比较的对象很像C语言中的指针,只有地址相同的指针才是同一个指针。

Python中is和==的区别的的更多相关文章

  1. python中的IO多路复用

    在python的网络编程里,socetserver是个重要的内置模块,其在内部其实就是利用了I/O多路复用.多线程和多进程技术,实现了并发通信.与多进程和多线程相比,I/O多路复用的系统开销小,系统不 ...

  2. Python::re 模块 -- 在Python中使用正则表达式

    前言 这篇文章,并不是对正则表达式的介绍,而是对Python中如何结合re模块使用正则表达式的介绍.文章的侧重点是如何使用re模块在Python语言中使用正则表达式,对于Python表达式的语法和详细 ...

  3. Python中的属性管理

    Python管 理属性的方法一般有三种:操作符重载(即,__getattr__.__setattr__.__delattr__和 __getattribute__,有点类似于C++中的重载操作符).p ...

  4. 正则表达式学习与python中的应用

    目录: 一.正则表达式的特殊符号 二.几种重要的正则表达式 三.python的re模块应用 四.参考文献 一.正则表达式的特殊符号 特殊符号可以说是正则表达式的关键,掌握并且可以灵活运用重要的pyth ...

  5. Python中is和==的区别

    Python中有很多运算符,今天我们就来讲讲is和==两种运算符在应用上的本质区别是什么. 在讲is和==这两种运算符区别之前,首先要知道Python中对象包含的三个基本要素,分别是:id(身份标识) ...

  6. 论python中的作用域

    编程语言从早至今,可以分为面向过程编程.面向函数编程和面向对象编程.BASIC语言是典型的面向过程编程的语言,C语言支持面向函数编程,但不支持面向对象,JAVA只支持面向对象编程,python同时支持 ...

  7. python中新式类和经典类的区别

    1).python在类中的定义在py2-3版本上是使用的有新式类和经典类两种情况,在新式类和经典类的定义中最主要的区别是在定义类的时候是否出现引用object;如:经典类:Class 类名::而新式类 ...

  8. python中的实例方法、静态方法、类方法、类变量和实例变量

    class MyTest: myname = 'peter' # add a instance attribute    def __init__(self, name):        self.n ...

  9. python 中 sorted() 和 list.sort() 的用法

    今天用python自带的sorted对一个列表进行排序, 在这里总结一下 只要是可迭代对象都可以用sorted . sorted(itrearble, cmp=None, key=None, reve ...

随机推荐

  1. VS2010生成安装包制作步骤

    VS2010生成安装包制作步骤   在VS2010中文旗舰版本中生成winForm安装包,可以复制你电脑中的开发环境,避免你忘记了一下配置然后在别的机器上运行不起来.也省去了Framwork的安装. ...

  2. Remote验证及其改进(附源码)

    Remote验证及其改进(附源码) 表单中的输入项,有些是固定的,不变的验证规则,比如字符长度,必填等.但有些是动态的,比如注册用户名是否存在这样的检查,这个需要访问服务器后台才能解决.这篇文章将会介 ...

  3. 实现WebService的调用与被调用

    之前一直用WCF来开发服务,可是从未用过WebService.对WebService有种很神奇的期待,都说WebService比较简单,但是从未用过就对我来说就是一种新的知识.起始让我来说WCF与We ...

  4. Python Learing(二):Basic Image Processing 1

    <写在前面> Basic image processing 1: 0.(以简单的曲线图为例)对于生成的图自定义外观,使用子图,多个数据集,标题,标签,交互式标注,图例: 1.生成散点图,直 ...

  5. 1572: [Usaco2009 Open]工作安排Job[贪心]

    Description Farmer John 有太多的工作要做啊!!!!!!!!为了让农场高效运转,他必须靠他的工作赚钱,每项工作花一个单位时间. 他的工作日从0时刻开始,有1000000000个单 ...

  6. Spring in action (1)

      spring中注入bean的方法: 1.通过xml文件来注入bean. 2.通过java注解来注入 默认的bean生命周期是单例的.每次都会返回相同的类的实例.

  7. 获取时间SQL函数语句

    1.获取时间 获取当天的数据 where  DATEDIFF (DD, 数据库中时间的字段 ,GETDATE())=0 查询24小时内的 where  DATEDIFF (HH, 数据库中时间的字段 ...

  8. C# 毛玻璃效果

  9. 软件Scrum

    软件海贼团 OnePiece (版权所有) 最近迷上了“海贼王”这部动画片,不仅仅是因为其中的人物个个性格鲜明,剧情跌宕起伏扣人心弦,各种耍宝搞笑,还感觉到这个团队很像理想中的敏捷软件团队. 作为一直 ...

  10. 常用的模式、JSON与DTO

    表现层的设计(一)——常用的模式.JSON与DTO 上几篇博文介绍了 业务逻辑层和数据访问层,我认为写博文的作用主要是向业界的读者交流一种思想,点到为止,至于学习架构设计,通过几篇博文是讲不清楚的,还 ...