python中的is是什么意思,pythonis和==的区别

  python中的is是什么意思,pythonis和==的区别

  ==是比较两个对象的内容是否相等,即两个对象的“值”是否相等,而不管两个对象在内存中的引用地址是否相同。

  Is比较两个实例对象是否相同,是否是同一个对象,是否占用同一个内存地址。比较两个条件:1。内容是一样的。2.内存中的地址是相同的。

  a=10000

  b=10000

  print(a==b)#True

  print(aisb)#True

  打印(id(a))#4461408208

  打印(身份证(b))#4461408208

  你好,世界

  b=helloworld

  print(a==b)#True

  print(aisb)#True

  打印(id(a))#4461408208

  打印(身份证(b))#4461408208

  a=[11,22,33]

  b=[11,22,33]

  print(a==b)#True

  打印(aisb)#假

  打印(id(a))#4409720712

  Print(id(b))#4409720776在上面的代码中,我们分别定义了两个变量A和B。通过输出结果可以发现,当变量为字符串或数字时,is和==的输出结果相同,当变量为列表时,is和==的输出结果不同。通过打印两个变量的id值,我们可以看到两个ID值是不同的。这是因为当我们创建列表A和B时,我们打开了两块内存来分别存储这两个变量。从外观上看,结果是一样的,只是两个变量指向的内存地址不同。我们将上述代码更改为以下代码:

  1a=[11,22,33]

  2b=a

  3print(a==b)#True

  4print(aisb)#True

  5打印(id(a))#4535062408

  6print(id(b))#4535062408在上面的代码中,我们没有直接给变量B赋值,而是让b=a,这样B和A指向同一块内存,所以A为B为真。

  我在PyCharm编辑器中实现了上面的代码,但是在终端命令行中实现时,结果是不同的,如下所示:

  1a=10000

  2b=10000

  3a==b

  4真

  5aisb

  6错误

  7id(a)

  84360555120

  9id(b)

  10436055216相关推荐:《Python视频教程》

  当我们使A和B的值变小时,它们如下:

  a=100

  b=100

  a==b

  真实的

  布达佩斯美国国际学校

  真实的

  id(a)

  4357367984

  身份证(b)

  357367984以上原因是python直接在内存中创建了小整数的副本,不会被回收。所有创建的小整数变量都可以直接从对象池中引用他。但是注意Python只缓存较小的整数对象(范围是[-5,256]),而不是所有的整数对象。也就是说,只有在这个[-5,256]范围内创建的变量值与is进行比较,才会有效。

  在PyCharm中,当值超过256时,is和==的输出结果还是一样的,因为解释器也做了一些优化,缓存了数字和字符串等变量。

  让我们再看一下当变量是字符串时的终端命令行:

  1a=helloworld

  2b=helloworld

  3a==b

  4真

  5aisb

  6错误

  7id(a)

  84359747248

  9id(b)

  1043612474081a=你好

  2b=你好

  3a==b

  4真实

  5aisb

  6真

  7id(a)

  84361199040

  9id(b)

  104361199040从输出结果可以看出,当变量是命令行中的简单字符串时,输出结果是一致的,否则,输出结果是不一致的。这是因为Python也缓存简单的字符串对象,可以优化代码的运行速度,减少内存消耗。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: