我正在学习Python并且正在尝试一些Pythonic奇怪的东西。我无法弄清楚为什么返回时,这个函数会抛弃数据。
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())
我甚至试过(在foo中)将我的列表深度复制到一个to_return变量中,然后返回它,但这似乎也不起作用。任何人都可以对此有所了解吗?我很感激。
答案 0 :(得分:8)
你必须保持return
:
您的递归电话:
foo(mylist)
需要返回其返回值:
return foo(mylist)