python中id(float1)和id(float2)的比较在函数中和交互界面中结果不同

>>>deffun1():float1=1.1float2=1.1print('id(float1)==id(float2)%s'%(id(float1)==id(flo... >>> def fun1():
float1=1.1
float2=1.1
print('id(float1)==id(float2) %s'%(id(float1)==id(float2)))
>>> fun1()
id(float1)==id(float2) True
“###在函数中id(float1)和id(float2)相等### ”
>>> float1=1.1
>>> float2=1.1
>>> id(float1)==id(float2)
False
“###在交互界面中id(float1)和id(float2)不相等### ”
“###这是为什么?###”
展开
 我来答
就烦条0o
2018-05-12 · 知道合伙人软件行家
就烦条0o
知道合伙人软件行家
采纳数:33315 获赞数:46491
从事多年系统运维,喜欢编写各种小程序和脚本。

向TA提问 私信TA
展开全部
当你在交互式解释器这么输入,a和b 所指向的1.1会被存入两个不同的PyCodeObject,所以是不同的
追问
谢谢,但是我试过int类型
int1=1
int2=1
id(int1)与id(int2)在函数中和交互式中都是相等的。
请问这是为什么,float类型和int类型怎么会出现不同的状况。
追答
两个1,存入了不同的PyCodeObject,可是CPython有小整数Cache, 所以不管生成几次1,都是一样。这些不同取决于交互式解释器的处理方式,所以测试这类内容,不要用交互式解释器,它里面做了一些不同滴事情。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式