爱学编程的灌硒 2023-02-06 16:42 采纳率: 93.3%
浏览 30
已结题

python小整数对象池的is和==的区别的问题

看到这样的话:“大家自己试试看a=257,b=257时它们的id还是否会相等。事实上Python 为了优化速度,使用了小整数对象池,避免为整数频繁申请和销毁内存空间。而Python 对小整数的定义是 [-5, 257),只有数字在-5到256之间它们的id才会相等,超过了这个范围就不行了,同样的道理,字符串对象也有一个类似的缓冲池,超过区间范围内自然不会相等了。”
当时是复习is和==的区别的时候查找到的推文里面说的,自己打了代码试了一下,发现不是话里所说的,求解答

######a

=257
b=257
print(id(a),id(b))

  • 写回答

4条回答 默认 最新

  • 梦想橡皮擦 Python领域优质创作者 2023-02-06 16:49
    关注

    说的是没有错的,小整数对象池就是这样的。

    a=257
    b=257
    print(id(a),id(b))
    

    运行结果

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

报告相同问题?

问题事件

  • 系统已结题 2月14日
  • 已采纳回答 2月6日
  • 创建了问题 2月6日

悬赏问题

  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败
  • ¥15 树莓派5怎么用camera module 3啊
  • ¥20 java在应用程序里获取不到扬声器设备
  • ¥15 echarts动画效果的问题,请帮我添加一个动画。不要机器人回答。
  • ¥15 Attention is all you need 的代码运行
  • ¥15 一个服务器已经有一个系统了如果用usb再装一个系统,原来的系统会被覆盖掉吗