理解 Python 字符串实习
字符串实习是一种 Python 实现细节,涉及在字符串值多次出现时仅创建一个字符串值实例在一个程序中。这种优化通过减少用于字符串存储的内存来加快程序执行速度。
在 Python 中,编译时常量字符串通常会被保留。因此,您可以直接比较两个字符串文字是否相等:
"string" is "string"
此比较返回 True,因为这两个字符串文字是同一个对象。
但是,字符串驻留不适用到运行时表达式。考虑以下代码:
s1 = "strin" s2 = "string" s1 + "g" is s2
您可能期望此表达式的计算结果为 True,因为将“g”添加到“strin”会产生“string”。但是,它返回 False。这是因为串联操作不会创建中间字符串:
s3a = "strin" s3 = s3a + "g" s3 is "string"
在这种情况下,s3 是一个新的字符串对象,与 s3a 和“string”不同。
您可以使用 sys.intern() 函数手动实习字符串:
sys.intern(s3) is "string"
这行代码强制 Python 创建一个与 s3 具有相同值的实习字符串。结果,与“string”的比较返回 True。
总之,Python 字符串驻留适用于编译时常量。但是,运行时字符串操作(例如串联)不会自动创建内部字符串。通过了解此实现细节,您可以通过仔细使用字符串驻留来优化代码性能。
以上是Python 字符串实习如何影响字符串比较以及何时应该使用'sys.intern()”?的详细内容。更多信息请关注PHP中文网其他相关文章!