Python input()“字节池”

s1=input('输入第一个')
s2=input('输入第二个')
# print(s1==s2)
print(id(s1))
print(id(s2))
print(type(s1))
print(s1 is s2)

当输入s1和s2为q时:

输入第一个q
输入第二个q
2321683913952
2321683913952
<class ‘str’>
True

当输入一个字节的值时,如a—z,1—9。他们的id相同,也就是内存地址相同。

最后那个True也是证明

当输入s1和s2为a1时:

输入第一个a1
输入第二个a1
1944362119664
1944362119552
<class ‘str’>
False

最后一个是False,和他们的id也是不相同的,

我猜想:当系统为s1开辟内存时,发现他是一个字节,就把他丢进了”字节池“,并给了它一个地址编号。而检测到s2也为字节时,就去”字节池"中查找,找到了同一个字节时,就给了他那个地址编号。并没有重新开辟一块空间。

重复开辟空间会造成内存浪费。所以这样对于字符串中,起到了一定的内存优化。

当然这是字符串的,还有整形的内存优化。

s1=int(input('输入第一个'))
s2=int(input('输入第二个'))
# print(s1==s2)
print(id(s1))
print(id(s2))
print(type(s1))
print(s1 is s2)

当输入[-5,256]之间的数字的时候:

输入第一个-5
输入第二个-5
1647996192
1647996192
<class ‘int’>
True

输入第一个-6
输入第二个-6
2372815266928
2372815269616
<class ‘int’>
False

输入第一个256
输入第二个256
1648004544
1648004544
<class ‘int’>
True

输入第一个257
输入第二个257
2315299431536
2315299434224
<class ‘int’>
False

显示为true的答案,起到了内存复用的效果,会优化内存。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值