2017-01-30 41 views
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。 ]?

回答

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里面的函数和函数外面实际上是一样的。