|
|
1
3
对于大多数内置类型,python试图确保切片的(浅)突变不会影响切片所来自的对象。
对于列表,这需要一个副本或变异
对于字符串,字符串不支持突变,因此语句如“mutating”
(你可能认为实习是有关系的,但事实并非如此。这个对象重用优化与Interning完全无关。这种情况甚至发生在非内部字符串上。你可以看看 the implementation 如果你愿意的话。 一般来说,如果您的程序曾经关心不可变对象的身份,那么您可能做了一些错误的事情。对象标识对于可变对象很重要,而Python确保可以预测可变对象的标识。对于不可变的对象,对象标识几乎不重要,而Python应用了许多对象重用实现,这些实现打破了许多关于对象标识的乐观假设。 |
|
|
2
0
短字符串是 interned 这样一百万个“测试”实例就不会占用一百万个字符串的存储空间。这是安全的,因为python的字符串是不可变的:如果两个字符串一次相等,您可以保证它们在余生都是相等的。 下面是另一个由相同的内存对象表示的短字符串示例:
|
|
|
JarochoEngineer · 跳过某些元素映射通过对象 2 年前 |
|
|
alekscooper · 为什么在对列表的切片进行排序时打印“无” 2 年前 |
|
|
starr · 如何剪切数组中对象的字符串属性? 2 年前 |
|
|
moo.duwayne · 保留引用而不将数据分配给实际变量是否安全? 3 年前 |
|
|
Karma_X · 从数据帧中进行切片和提取 3 年前 |
|
|
julien · 如何返回结构中向量的切片 3 年前 |
|
mins · 将常量添加到数组的切片 3 年前 |