del语句的功能

functionality of del statement

我想知道为什么如果我将一个包含多个字符的字符串拆分成一个列表,那么 del 函数只有在我将列表保存到一个新对象时才起作用? 示例:

x = 'Hello world'
del x.split()[0]
print(x)
out: Hello world
y = x.split()
del y[0]
print(y)
out: ['world']

首先,x.split()创建了一个完全独立于x的列表(甚至忽略了str值不可变的事实);修改该列表不会以任何方式影响 x

其次,您没有保存对 x.split() 编辑的列表 return 的引用,因此即使 del x.split()[0] 确实改变了该列表,一旦语句完成,整个 列表要进行垃圾回收。

在你的第二个例子中,你参考了x.split(0)的return值,所以你可以观察[=17的结果=].