python小白一枚问一个我比较在意的问题。之前在别的地方问过不过没有太满意的回答,希望能解释清楚点谢谢。我在python3.8.2里查看字符串代码是这样子的结果
>>> id('cpccp')
4300388336
>>> id('oee8ed.')
4300388336
但是在3.7里不是这样了
id('cpccp')
4368612352
id('oee8ed')
4370164792
为什么在3.8里面不同的字符串地址一样,而在3.7里面地址会不一样,请问有大神能够帮忙解决吗,好像到处也没人问这个问题的,我就来这里看看。然后好想别的人用同样的版本结果跟我的不一样,有人说跟内存共享和电脑有关但我没听懂
但是好像也有一样的点,如下>>> a='apple'
>>> b='basket'
>>> a+b is 'applebasket'#不管是a+b还是a+'basket'都是false
:1: SyntaxWarning: "is" with a literal. Did you mean "=="?
False
>>> id(a+b)
4300389360
>>> id('apple'+b)#输出地址都一样
4300389360
>>> id('apple'+'basket')
4300389360
=================================================
a='apple'#python3.7
b='basket'
a+b is 'applebasket'
False
id(a+b)
4369049264#和下面的地址不一样
id(a+'basket')
4366530480
这个第二个问题跟编译期有关 我在这里看到的https://www.cnblogs.com/greatfish/p/6045088.html
这个第二个问题很多人直接无视了。。。。