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

Gui*_*oMB 26 python string

我想知道我什么时候做的事情

a = "This could be a very large string..."
b = a[:10]
Run Code Online (Sandbox Code Playgroud)

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

Blu*_*eft 43

Python逐个复制,这意味着每次切片时(除非非常简单的切片,例如a[:]),它会将所有数据复制到一个新的字符串对象中.

根据其中一位开发人员的说法,这个选择是因为

[逐个引用]方法更复杂,更难实现,并可能导致意外行为.

例如:

a = "a long string with 500,000 chars ..."
b = a[0]
del a

使用slice-as-copy设计,字符串a立即被释放.切片作为参考设计会将500kB字符串保留在内存中,尽管您只对第一个字符感兴趣.

显然,如果您绝对需要查看字符串,则可以使用memoryview对象.