我有这段代码:
def h(l1,l2):
l1.pop()
l2 = l2 +l1
l1=[1,2,3]
l2=[]
h(l1,l2)
print (l1,l2)
为什么运行代码后,l1为[1,2]且l2保持不变([])。为什么l2不是[1,2]?
答案 0 :(得分:0)
这是因为l2对于你的h函数是本地的,所以函数外的l2并不知道你改变了一些其他变量,即使它们具有相同的名称,尽管它们的范围不同。
这是你期望发生的吗?
def h(l1,l2):
l1.pop()
l2.extend(l1 +l2)
l1=[1,2,3]
l2=[]
h(l1,l2)
print (l1,l2)
>>> '[1, 2] [1, 2]'
在这种情况下,我没有定义一个新变量,我改变了函数内部的现有l2。这样,l2函数内部和函数外部实际上是一样的。