Python是否对字符串进行逐个引用?

时间:2011-04-19 20:04:20

标签: python string

我想知道我什么时候做

a = "This could be a very large string..."
b = a[:10]

创建一个新字符串或返回一个视图/迭代器

2 个答案:

答案 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实例。字符串是不可变的对象。

相关问题