FrankJT 2021-07-18 11:25 采纳率: 50%
浏览 28
已采纳

python中,变量的身份id怎么理解

python的身份判断可以用 is eg. a is b判断。

    a = 20
    b = 20
    print(a is b, id(a), id(b))

这样会输出true。查询a和b的id,是一样的,type和val自不必说。
在网上查id属性,说是类似于c/c++的指针指向的内存空间。
如果是c语言,那么两个变量指向的内存空间必然不同,可python为何id相同呢?
也就是说a和b两个变量的内存空间相同?

    a = 20
    b = 20
    print(a is b, id(a), id(b))
    a += 50
    b += 10
    print(a is b, id(a), id(b))

对a和b进行不同的运算后,就不同了。
所以,这个id到底应该怎么理解呢?

  • 写回答

3条回答 默认 最新

  • 快ྂ乐ྂ至ྂ上ྂ 2021-07-18 11:48
    关注

    这么理解,变量是容器,值是系统给的标签。。开始你给a和b都贴了标签20,指向同一个系统内存,就是
    20所对应的地址。所以,是同一个。
    然后,a和b给个不同值,或者不同操作后,值变了,标签不一样了呀,一个贴70,一个贴30,对应的就不一样了。如果系统地址是货架,那它俩就一个放70,一个放30了。之前一样就摞一堆了,哈哈

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 已采纳回答 7月20日
  • 创建了问题 7月18日

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效