我正在学习 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 变量中,然后返回它,但这似乎也不起作用。任何人都可以阐明这一点吗?我将不胜感激。
请您参考如下方法:
你必须保持 returning:
你的递归调用:
foo(mylist)
需要返回它的返回值:
return foo(mylist)
