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

>>> 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)不相等### ”
“###这是为什么?###”

当你在交互式解释器这么输入,a和b 所指向的1.1会被存入两个不同的PyCodeObject,所以是不同的追问

谢谢,但是我试过int类型
int1=1
int2=1
id(int1)与id(int2)在函数中和交互式中都是相等的。
请问这是为什么,float类型和int类型怎么会出现不同的状况。

追答

两个1,存入了不同的PyCodeObject,可是CPython有小整数Cache, 所以不管生成几次1,都是一样。这些不同取决于交互式解释器的处理方式,所以测试这类内容,不要用交互式解释器,它里面做了一些不同滴事情。

温馨提示:答案为网友推荐,仅供参考
相似回答