请问d没有开辟内存空间吗?

请问d没有开辟内存空间吗?

a开辟了新的内存空间,b相当于复制了一份a,新建了d,

为什么a is d 返回的也是True啊?

请问难道d没有开辟内存空间吗?

http://img1.sycdn.imooc.com//climg/5ce36fb3000158fe03850341.jpg

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕美 2019-05-21 13:38:31

同学,你好,python会对小整数[-5,256]区间内的整数创建小整数对象池,这些对象一旦创建,就不会回收,所有新创建的在这个范围的整数都是直接引用的。所以造成在[-5,256]区间内的整数不同变量只要值相同,引用地址也相同。需要注意的是,仅仅是在命令行中执行,而在Pycharm中,结果是不一样的,这是因为解释器做了一部分优化。

http://img1.sycdn.imooc.com//climg/5ce38e99000110c507420257.jpg

如果我的回答解决了您的疑惑,请采纳!祝学习愉快~~~~

  • #身份运算符 #内存地址比较,是否是同一个对象 a = '5000' b = a c = '5000' print(a is b) print(a is c)#True 改成字符串依旧是指向同一内存空间 为什么呢
    2019-08-01 17:07:13
  • foo1=foo2=4.3 --->可能我们会认为这是一个多重赋值的过程,将4.3赋值为foo1,foo2这两个变量,但是实际上是创建了一个4.3的数字对象,然后将这个对象的引用赋值给foo1,foo2,也就是说foo1和foo2得到不是4.3本身,而是对4.3这个对象的引用。 这是我查的例子,是他说的这个意思吗? 而不是说python会对小整数[-5,256]区间内的整数创建小整数对象池,这些对象一旦创建,就不会回收,所有新创建的在这个范围的整数都是直接引用的。
    2019-08-01 17:39:28
  • 也就是说 a 跟 c 都是对 对象'5'的引用。不管赋值的类型是什么,都是这个道理
    2019-08-01 17:42:54
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
1.Python零基础入门
  • 参与学习           人
  • 提交作业       2727    份
  • 解答问题       8160    个

想要进入Python Web、爬虫、人工智能等高薪领域,你需要掌握本阶段的Python基础知识,课程安排带你高效学习轻松入门,学完你也能听得懂Python工程师的行业梗。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师