【发布时间】:2021-07-14 13:41:26
【问题描述】:
在这段代码中,我发现当第 1 行正在运行时(第 2 行被注释),tcheck2 函数可以更改列表 x,但是当它在第 2 行更新 x=[[] for _ in range(3+1)] #2 时,tcheck1 函数中的 x 没有任何反应,为什么是吗?
def tcheck():
x=[11,54]
tcheck2(x)
print(x)
def tcheck2(x):
print(x)
x[0]+=1 #1
x=[[] for _ in range(3+1)] #2
【问题讨论】:
-
你能澄清一下这个问题吗?
q是什么? -
@S3DEV 抱歉,这是打印。
-
This video might be of interest @NedBatchelder 谈论变量赋值期间发生的事情,特别是列表可变性。 (事实上,我发现自己不时会重新观看提醒!)
-
因为
x=[[] for _ in range(3+1)]创建了一个新列表,并将其分配给局部变量x。另一方面,x[0]+=1实际上是列表对象的 mutator 方法。