1、驻留机制:
仅保存一份相同且不可变字符串的方法,不同的值存放在字符串的驻留池中,python的驻留机制对相同的字符串只保留一份拷贝,后续遇见相同字符串时,不会开辟新的空间,而是把该字符串的地址赋值给新创建的变量
1.1、作用:
节省内存空间
1.2、如何查看程序“对象”在内存中的地址
使用 id (对象名) 的形式
例如:
s1 = 'python'
s2 = 'python'
s3 = 'python'
print(f's1 = {s1}, id(s1) = {id(s1)}')
print(f's2 = {s2}, id(s2) = {id(s2)}')
print(f's3 = {s3}, id(s3) = {id(s3)}')
结果:
1.3、注意:
①可以看到储存字符串s1 , s2 , s3的地址是一样的
②基本数据类型(int , float......)不需要考虑地址问题,只有对象类型需要考虑地址,字符串属于对象类型
③字符串对象内容发生变化,改变的是该字符串引用的地址,而不是在原地址上进行内容覆盖
例如:
s1 = 'python'
s2 = 'python'
s3 = 'python'
print(f's1 = {s1}, id(s1) = {id(s1)}')
print(f's2 = {s1}, id(s2) = {id(s2)}')
print(f's1 = {s3}, id(s3) = {id(s3)}')
s1 = 'hello world' # 变量s1的内容发生了变化
print(f's1 = {s1}, id(s1) = {id(s1)}')
print(f's2 = {s1}, id(s2) = {id(s2)}')
print(f's1 = {s3}, id(s3) = {id(s3)}')
结果:
说明:
我们先把字符串“python”赋值给变量s1,然后我们在中途给变量s1赋予了心得字符串“hello world”。可以看到新的字符串并不是在原地址进行覆盖,而是储存在新的地址里。
2、切片操作:
2.1、含义:
将原来的字符串进行切割,切成一小部分
2.2、操作图解:
2.3、语法及解释:
语法:[start : stop : step]
start:开始(如果不写默认重头开始,从0开始)
stop:结束(如果不写默认到结尾)
step:步长(默认为1)
2.4、索引(index)
索引分为正向索引和逆向索引,上面一行是逆向索引(从-1开始),下面一行是正向索引(从0开始)
2.5、示例:
str[6:12:1] 从6开始切,切到12这个位置(不包含12),步长step默认为1
结果: