Python is 与 == 的区别

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

  x = 123
  print(id(x))  # 4305324896    id获取变量内存地址
  print(type(x)) # <class 'int'>  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个字符,包含特殊字符如:#@ 都不为同一地址

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 打印结果 is是用于判断 a b 是否指向同一个对象==是用于判断 a b 的值是否相等
    一本大书阅读 316评论 0 0
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 5,808评论 0 10
  • 文/灿 我们迟早有一天会变成我们曾经所唾弃的那个人,只是我们都太普通又都太特别,我们迟早都会和一...
    清晨一只鹿阅读 849评论 0 0
  • 1)翻译下面的句子: 抖音的成功反映了人们对娱乐的强烈渴望。 The success of TikTok refl...
    荆棘海_Ph阅读 143评论 0 0
  • 项羽最后为什么会输给刘邦呢?很多人都说是因为性格原因,那么咱们今天就从战争的本身出发。来看看项羽最后为什么会输给刘...
    千玺的艳芬阅读 180评论 0 0