Mutable Default Argument返回None

时间:2010-10-07 06:49:15

标签: python

我有一个简单的代码,可以使用存储在字典中的图表来查找路径。代码完全正确:

def find_path(dct, init, depth, path=[]):
   if depth == 0:
      return path
   next_ = dct[init]
   depth-=1
   find_path(dct, next_, depth)

如果我在return path之前打印路径,则会打印出正确的路径(在初始深度为5之后)。但是,返回的值为None。我不知道发生了什么事!

为什么path的值高于return是正确的,但返回的路径不是我想要的?

2 个答案:

答案 0 :(得分:3)

不应该这个

find_path(dct, next_, depth)

return find_path(dct, next_, depth)
# ^^^^
# Return

在Python中(与Ruby不同),您必须明确return一个值。否则返回None

答案 1 :(得分:1)

因为您使用大于0的depth来调用它,这会导致它从结尾处掉落并返回None