我想知道我什么时候做
a = "This could be a very large string..."
b = a[:10]
创建一个新字符串或返回一个视图/迭代器
答案 0 :(得分:41)
Python does slice-by-copy,表示每次切片(very trivial slices除外),例如a[:]
),它会将所有数据复制到新的字符串对象中。
根据one of the developers,这个选择是因为
[参考切片]方法更复杂,更难实现 并可能导致意外行为。
例如:
a = "a long string with 500,000 chars ..." b = a[0] del a使用slice-as-copy设计,字符串
a
立即被释放。该 尽管如此,slice-as-reference设计会将500kB字符串保留在内存中 你只对第一个角色感兴趣。
显然,如果你绝对需要一个字符串视图,你可以使用memoryview
对象。
答案 1 :(得分:0)
切换字符串时,它们会返回一个新的String实例。字符串是不可变的对象。