Python自学15——第八章(1):字符串的驻留机制(定义、适用对象、意义)

"本文详细介绍了Python中的字符串驻留机制,包括其定义、适用情况以及作用。驻留机制主要适用于空字符串、长度为1的字符串、符合标识符的字符串以及[-5, 256]之间的整数数字。通过驻留,Python能有效地复用内存,提高效率。文章还通过实例验证了各种情况下的驻留现象,并指出使用str.join()方法拼接字符串比使用"+"更高效。"

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1、什么是字符串驻留机制?

2、何种情况有驻留机制?

(1)验证“字符串的长度是0或者1时”的驻留机制

(2)验证“符合标识符的字符串”的驻留机制

(3)验证“字符串只在编译时进行驻留,而非运行时”的驻留机制

(4)验证“[-5,256]之间的整数数字”的驻留机制

3、字符串的驻留机制有什么用?


1、什么是字符串驻留机制?

字符串和元组都是不可变序列

如示例所示:a,b,c无论是用的单引号、双引号还是三引号,它里面的字符串内容都是Python,他们指向的内存地址都是。。。4560。这就是字符串的驻留机制。

2、何种情况有驻留机制?

那么都何种情况有驻留机制呢?(交互模式)

a.字符串的长度是0或者1时

b.符合标识符的字符串

c.字符串只在编译时进行驻留,而非运行时

d. [-5,256]之间的整数数字

由于要使用交互模式,于是我们打开cmd

(1)验证“字符串的长度是0或者1时”的驻留机制

由上图可见,当字符串是空字符或长度为1的字符时,判断地址是否相同时是TRUE。

通过使用id()函数我们能看到地址确实是一样的。

(2)验证“符合标识符的字符串”的驻留机制

首先要明白什么是符合标识符的字符串,符合标识符的字符串就是:字母、数字、下划线,出现别的东西就不符合标识符了。由图中我们可以看到,符合标识符的字符串符合驻留机制,它们的地址是一样的。

(3)验证“字符串只在编译时进行驻留,而非运行时”的驻留机制

这里的a就是现成的字符串abc;b是将ab和c拼接起来的,注意这里的拼接操作是程序操作之前就拼接好了;最后的c也是拼接操作,只不过用的是join函数,注意这里的拼接操作是程序进行时操作的。

因此c既然是运行时进行操作的,那么它是不符合驻留机制的,而a和b是符合字符串的驻留机制的。

(4)验证“[-5,256]之间的整数数字”的驻留机制

在那个范围里的数字是有驻留机制的。

PS:当不符合驻留机制时,可以调用sys.intern()函数强制驻留。

这里的a就通过sys.intern()函数进行强制驻留了。因此a is b的结果就是TRUE了。

3、字符串的驻留机制有什么用?

        当需要值相同的字符串时,可以直接从字符串池里拿来使用,避免频繁的创建和销毁,提升效率和节约内存,因此拼接字符串和修改字符串是会比较影响性能的。

        当需要进行字符串拼接时建议使用str类型的join方法,而非”+” , 因为join方法是先计算出所有字符中的长度,然后再拷贝,只new一次对象,效率比”+”效率高。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wo~he!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值