pycharm terminal终端 关于相同变量值 区间不同 变量内存地址的变化

pycharm terminal终端 关于相同变量值 区间不同 变量内存地址的变化

一)如何理解在pycharm解释器terminal 中输入以下代码中两个变量值在255以上的内存地址不同的问题

a = 300

b = 300

print(a is b) 

输出值为False,这个情况与我提问的第一个问题,在编译器中两个相同变量值在分别赋予不同变量时,内存地址是相同的,为什么在python环境 两个相同的255以上的变量数值 内存地址却不相同,视频课老师说的我实在是没听懂,很乱感觉。

二)在解释器终端输入两个数值在255以内的变量,内存地址一致,理由可否与在python编译器中赋给两个变量相同值,内存地址相同的解释。

请老师解答,谢谢!

https://img1.sycdn.imooc.com//climg/63e4f36009d69e6117220658.jpg


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

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

1回答
好帮手慕凡 2023-02-10 09:38:20

同学,你好!

Python解释器中-5到256之间的整数的内存地址是固定的(闭区间),并不会因为被赋值给一个变量而开辟新的内存区域来储存这些常用整数值,祝学习愉快~


  • 提问者 懒惰的围脖 #1

    https://img1.sycdn.imooc.com//climg/63e5f6030910e77718180378.jpg

    https://img1.sycdn.imooc.com//climg/63e5f6040973387d20021428.jpg


    为什么在[-5, 255]区间以外的两个相同的数值赋值给不同的变量,分别打印其内存地址,会在python编译器和在python解释器上会出现不一样的内存地址。

    我的问题是为什么在终端解释器下

    a = 333

    b = 333

    print( a is b )

    结果是False,a和b在相同变量值的情况下为什么,id结果是不同的。

    2023-02-10 15:52:16
  • 好帮手慕凡 回复 提问者 懒惰的围脖 #2

    同学,你好!终端中和ide中是两个不同的环境,-5~255是提前定义到内存中,300不在该范围内,因此结果为False,在命令行(终端)中执行是这样的结论,而在Pycharm中,因为解释器做了一部分优化,因此会是值相等,祝学习愉快~

    2023-02-10 15:57:17
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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