资讯专栏INFORMATION COLUMN

python is 与 == 的区别

Zachary / 3379人阅读

摘要:在了解与这两种运算符区别之前,首先要知道中对象包含的三个基本要素,分别是身份标识数据类型和值获取变量内存地址获取变量的类型判断的是对象是否就是对象,是通过来判断的判断的是对象的值是否和对象的值相等,是通过来判断的首先看下看下测试下当内存地址

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

  x = 123
  print(id(x))  # 4305324896    id获取变量内存地址
  print(type(x)) #   typ获取e变量的类型

is判断的是a对象是否就是b对象,是通过id来判断的

==判断的是a对象的值是否和b对象的值相等,是通过value来判断的

# 首先看下List
l1 = [1,2,3]
l2 = [1,2,3]
print("l1 id is {0}, l2 id is {1}".format(id(l1), id(l2)))  #l1 id is 4366569928, l2 id is 4366570056
print(l1 is l2) # False
print(l1 == l2)  # True

# 看下Dict
d1 = {"a":"a", "b": "b"}
d2 = {"a":"a", "b": "b"}
print("d1 id is {d1}, d2 id is {d2}".format(d1=id(d1), d2=id(d2)))   # d1 id is 4366538072, d2 id is 4366536848
print(d1 is d2)  # False
print(d1 == d2)  # True

# 测试下int
i1 = 1
i2 = 1
print("i1 id is {i1}, i2 id is {i2}".format(i1=id(i1), i2=id(i2)))  # i1 id is 4305320992, i2 id is 4305320992
print(i1 is i2) # True 当内存地址相同的时候返回True
print(i1 == i2) # True 

# 测试下str
s1 = "a"
s2 = "a"
print("s1 id is {s1}, s2 id is {s2}".format(s1=id(s1), s2=id(s2)))  # s1 id is 4364003736, s2 id is 4364003736
print(s1 is s2) # True
print(s1 == s2) # True
# 来一个特殊的str
s3 = "a "
s4 = "a "
print("s3 id is {s3}, s4 id is {s4}".format(s3=id(s3), s4=id(s4))) # s3 id is 4366553192, s4 id is 4366553304
print(s3 is s4) # False
print(s3 == s4) # True
提示:当int 在范围-5--256是同一地址,即 is 比较 True
当str 有空格, 长度超过20个字符,包含特殊字符如:#@ 都不为同一地址

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/42738.html

相关文章

  • 举例子让你明白pythonis和==区别

    摘要:在说和的区别之前,我们先理解下的变量。的变量和的变量有很大的区别,因为一个是动态语言,另一个是静态语言。结果可以看到,是相等的。现在我们再看看和之间的区别。这是为了防止你不小心创建了多个相同对象而浪费大量内存甚至会发生挤爆内存的后果。 在说 is 和 == 的区别之前,我们先理解下python的变量。python的变量和java的变量有很大的区别,因为一个是动态语言,另一个是静态语言。...

    HitenDev 评论0 收藏0
  • python学习笔记 - fork, multiprocessing

    摘要:近年来,人工智能的兴起使得更加火爆了。获取当前进程父进程的。但是唯一遗憾的是,函数只能在系统中使用,不能在系统中使用。因此在下,需要将其包含在中。则是立即返回一个可迭代对象。则是返回可迭代函数。 Python一直是一门对初学者非常友好的语言,在数据分析、Web 开发、网络安全、网络爬虫等方面应用广泛。近年来,人工智能的兴起使得 Python 更加火爆了。 我们在处理大量数据或者需要快速...

    littleGrow 评论0 收藏0
  • 一篇文章入门Python生态系统

    摘要:你使用的系统自带的包管理器包索引也被称为各种源码托管服务,如,,等。通过系统自带的包管理器安装使用系统自带的包管理器安装,只需要在命令行输入相应命令,或是使用你用来安装其他应用的应用即可。 译者按:原文写于2011年末,虽然文中关于Python 3的一些说法可以说已经不成立了,但是作为一篇面向从其他语言转型到Python的程序员来说,本文对Python的生态系统还是做了较为全面的介绍...

    dadong 评论0 收藏0
  • 可变对象不可变对象

    摘要:不可变对象不允许对自身内容进行修改。因为他们说到不可变对象时用的是赋值,而说到可变对象又用了的索引等方法,这根本是两码事。基于这一设定,两者在功能上的最大区别就是不可变对象可以作为字典的键,而可变对象不行。 前阵子我们聊了下函数的参数传递以及变量赋值的一些内容:关于函数参数传递,80%人都错了 简单回顾下要点: 1. Python 中的变量不是装有对象的 容器 ,而是贴在对象上的 标签...

    jay_tian 评论0 收藏0
  • Python中几种属性访问区别

    摘要:起步的提供一系列和属性访问有关的特殊方法。本文阐述它们的区别和用法。属性的访问机制一般情况下,属性访问的默认行为是从对象的字典中获取,并当获取不到时会沿着一定的查找链进行查找。则这个类的对象称为描述符。 起步 python的提供一系列和属性访问有关的特殊方法:__get__, __getattr__, __getattribute__, __getitem__ 。本文阐述它们的区别和用...

    zhouzhou 评论0 收藏0

发表评论

0条评论

Zachary

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<