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)不相等### ”
“###这是为什么?###” 展开
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,都是一样。这些不同取决于交互式解释器的处理方式,所以测试这类内容,不要用交互式解释器,它里面做了一些不同滴事情。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询