【发布时间】:2021-10-20 01:03:33
【问题描述】:
我对 Python 如何处理 stop 属性大于我们正在使用的字符串长度的切片感兴趣,例如:
my_string = 'abc'
my_slice = my_string[:10]
我知道my_slice == 'abc',我感兴趣的是它的效率以及它是如何在幕后工作的。
我已阅读 Time complexity of string slice 和 Understanding slice notation,但没有找到我正在寻找的确切案例。
根据上述来源,我的猜测是返回字符串的浅拷贝(my_string[:10] 在这种情况下与 my_string[:] 相同),是这样吗?
【问题讨论】:
-
在 CPython 解释器中缓存了小字符串,因此在这种情况下,
my_string[:10]和my_string[:]很可能返回与my_string完全相同的 str 对象 -
@IainShelvington - 可能是标识符的小字符串 - 因此在字符串中包含空格(例如)意味着它们不会被缓存。
-
@TonySuffolk66 感谢您提供的信息。有趣的是,制作包含这样空格的字符串的“副本”仍然返回相同的对象,我猜在这种情况下,实现返回相同的对象作为优化
标签: python python-3.x string slice