2016-11-02 11 views
1

私はPythonを勉強していて、あるPythonの奇妙さにぶつかっています。なぜ私は戻って、この関数は、データをスローする理由を把握することはできません。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変数に自分のリストを深くコピーして返してみることさえしようとしましたが、それはどちらもうまくいかないようです。誰かがこれについていくつかの光を当てることができますか?私はそれをお願い申し上げます。

あなたの再帰呼び出し:あなたはreturn ING維持する必要があり

答えて

8

foo(mylist) 

は、その戻り値が返される必要があります。

return foo(mylist) 
+0

感謝を!これはPythonのものでもありません。私はそれを捕らえておくべきだった。 –

関連する問題