def f1(v,y):
v = 4
y += v
return y
def f2(L,x):
L.append(x)
return L
L1 = [1,2,3]
L2 = `f2(L1,'a')`
print(L1) # Line 1
print(L2) # Line 2
a = 2
b = 3
c = f1(a,b)
print(a) # Line 3
print(c) # Line 4
print( f1(L1,1) ) # Line 5
为什么第1行打印[1,2,3,“a”],而不仅仅是[1,2,3]? 是因为L2 = f2(L1,'a')?怎么样?
答案 0 :(得分:0)
f2
将第二个参数附加到作为第一个参数传递的列表中。将"a"
追加到[1, 2, 3]
会产生您{1}}的输出。
答案 1 :(得分:0)
这是因为,在将参数L1
传递给函数f2
时,传递变量的指针。因此,当您在函数中向变量L
附加值时,列表L1
也会被修改(L
只是指向L1
的指针)
如果函数修改作为参数传递的对象,则调用者 会看到变化
查看this
因此is it beacuse of the L2=f2(L1,'a')?
是
希望它有所帮助!
答案 2 :(得分:0)
如果想将L1作为[1,2,3],则将其分配给新列表...
def f2(L,x):
L3 = L.copy() # copy passed list 'L' to L3
L3.append(x)
return L3 # return list with x at end of list
但这不会改变你当前的名单L1
答案 3 :(得分:0)
设L = [1,2,3]
你想在这个列表中追加'a'
像这样,L.append('a')
然后列表将是L = [1,2,3,'a']。 R8?
这里使用函数f2(L,'a')发生同样的事情
f2函数将一个列表和一个值'a'作为参数,并将'a'附加到L列表中,然后返回值为[1,2,3,'a']的L。
并将此列表分配给名为L2的变量。