2017-01-30 40 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裏面的函數和函數外面實際上是一樣的。