python内存分配失败_python内存分配和编译期的问题

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

这个第二个问题很多人直接无视了。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值