0
我有这样的代码:公开程度的函数
def h(l1,l2):
l1.pop()
l2 = l2 +l1
l1=[1,2,3]
l2=[]
h(l1,l2)
print (l1,l2)
为什么运行的代码后,L 1是[1,2]和L2保持相同([])为什么L2为[1,2。 ]?
我有这样的代码:公开程度的函数
def h(l1,l2):
l1.pop()
l2 = l2 +l1
l1=[1,2,3]
l2=[]
h(l1,l2)
print (l1,l2)
为什么运行的代码后,L 1是[1,2]和L2保持相同([])为什么L2为[1,2。 ]?
因为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里面的函数和函数外面实际上是一样的。