2016-11-02 104 views
1

我正在學習Python,並且碰到了一些Pythonic奇怪的東西。我無法弄清楚爲什麼在返回時,這個函數拋出數據。在Python中返回列表

def foo(mylist=None): 
    print "Input: {}".format(mylist) 
    if mylist is None: 
     mylist = list() 
    if len(mylist) == 3: 
     return mylist 
    else: 
     mylist.append(len(mylist)) 
     foo(mylist) 

print "Output: {}".format(foo()) 

此打印:

Input: None 
Input: [0] 
Input: [0, 1] 
Input: [0, 1, 2] 
Output: None 

我猜想,它與指向不再存在的清單做,但我不明白,在一個簡單的例子:

def simple_foo(): 
    to_return = [1, 2, 3] 
    return to_return 

print "Simple output: {}".format(simple_foo()) 

我甚至嘗試過(在富)深入複製我的列表到to_return變量,然後返回,但似乎並沒有工作。任何人都可以對此有所瞭解嗎?我會很感激。

回答

8

你必須保持return ING:

你的遞歸調用:

foo(mylist) 

需要返回它的返回值:

return foo(mylist) 
+0

謝謝!這甚至不是Python的東西;我應該抓住那個。 –