我想知道为什么如果我将一个包含多个字符的字符串拆分成一个列表,然后 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()
返回的列表的引用,所以即使 del x.split()[0]
保存了改变该列表,一旦语句完成,整个列表将被垃圾收集。
在您的第二个示例中,您确实对x.split(0)
的返回值有一个引用,因此您可以观察del 的结果
。
关于python - del语句的功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67627090/