列出对全局范围有影响的本地范围的修改

时间:2017-10-28 15:20:52

标签: python python-3.x list

我正在尝试了解运行以下代码时发生的情况:

def modif(l1,l2):
    l1[:] = l2
y=[1,2,[3,4]]
x=[0 for i in y]
print(modif(x,y))
print(x)
print(y)

我对语言的理解(谦虚)表明函数中发生的修改不适用于语言环境范围之外,但会返回以下内容:

None
[1, 2, [3, 4]]
[1, 2, [3, 4]]

同时,以下代码:

def modif(l1,l2):
    l1 = l2
y=[1,2,[3,4]]
x=[0 for i in y]
print(modif(x,y))
print(x)
print(y)

返回以下内容:

None
[0, 0, 0]
[1, 2, [3, 4]]

我不明白为什么x会在全局范围内发生变化。

1 个答案:

答案 0 :(得分:0)

也许类似问题的答案可以帮助您理解: What does list[:] = [...] do in Python