马士兵Python学习笔记_P76_75.字符串的创建与驻留机制
一、字符串的驻留机制
二、代码示例
# 不可变序列:字符串、元组
# 可变序列:列表、字典、集合
# 可迭代对象:
# 字符串的驻留机制
str1 = 'Python'
str2 = "Python"
str3 = '''Python'''
print(str1, type(str1), id(str1))
print(str2, type(str2), id(str2))
print(str3, type(str3), id(str3))
s1 = ""
s2 = ""
print(s1, type(s1), id(s1))
print(s2, type(s2), id(s2))
print(s1 is s2)
s1 = '%'
s2 = '%'
print(s1, type(s1), id(s1))
print(s2, type(s2), id(s2))
print(s1 is s2)
s1 = 'abc%'
s2 = 'abc%'
print(s1, type(s1), id(s1))
print(s2, type(s2), id(s2))
print(s1 is s2)
print(s1 == s2)
s1 = 'abcx'
s2 = 'abcx'
print(s1, type(s1), id(s1))
print(s2, type(s2), id(s2))
print(s1 is s2)
print(s1 == s2)
a = "abc"
b = "ab" + "c"
c = "".join(["ab", "c"])
print(a, type(a), id(a))
print(b, type(b), id(b))
print(c, type(c), id(c))
print(a is b, a == b)
print(a is c, a == c)
a = -5
b = -5
print(a, type(a), id(a))
print(b, type(b), id(b))
print(a is b, a == b)
a = -6
b = -6
print(a, type(a), id(a))
print(b, type(b), id(b))
print(a is b, a == b)
import sys
a = "abc%"
b = "abc%"
print(a, type(a), id(a))
print(b, type(b), id(b))
print(a is b, a == b)
a = sys.intern(b)
print(a, type(a), id(a))
print(b, type(b), id(b))
print(a is b, a == b)
运行结果:
D:\Environment\Python\Python311\python.exe D:\Environment\PythonWorks\learnpython\马士兵Python\第9章_一串连一串\P76_75.字符串的创建与驻留机制.py
Python <class 'str'> 140713761609808
Python <class 'str'> 140713761609808
Python <class 'str'> 140713761609808
<class 'str'> 140713763030752
<class 'str'> 140713763030752
True
% <class 'str'> 140713763052000
% <class 'str'> 140713763052000
True
abc% <class 'str'> 2312191110704
abc% <class 'str'> 2312191110704
True
True
abcx <class 'str'> 2312191111664
abcx <class 'str'> 2312191111664
True
True
abc <class 'str'> 140713761644096
abc <class 'str'> 140713761644096
abc <class 'str'> 2312191112368
True True
False True
-5 <class 'int'> 140713763009128
-5 <class 'int'> 140713763009128
True True
-6 <class 'int'> 2312189295952
-6 <class 'int'> 2312189295952
True True
abc% <class 'str'> 2312191110704
abc% <class 'str'> 2312191110704
True True
abc% <class 'str'> 2312191110704
abc% <class 'str'> 2312191110704
True True
Process finished with exit code 0