有人能解释一下为什么这个python代码打印6而不是-10?
为什么s2 / list2在这段代码中没有改变?
def f(s1,s2):
s2 = s1
s1[2] = -7
s1 = s2
s2[2] = -10
list1 = [1,2,3]
list2 = [4,5,6]
f(list1,list2)
print(list2[2])
答案 0 :(得分:1)
在函数内部的行s2 = s1
之后,传入的s2在函数内部不再相关。
该行将值(即列表和内容)分配给变量s2。
答案 1 :(得分:1)
使用s2 = s1
,您刚刚丢失了s2
的本地引用(即list2
)。从那时起,您正在改变s1
(list1
),将-7
分配给list1[2]
,然后分配-10
。
您没有以任何方式更改list2
。例如,在作业中使用其他名称来使其起作用,s = s1
。