给出示例函数:
def FooBar(foo_exp):
if Bar:
update_Foo(foo_exp)
FooBar(foo_exp)
else:
newNode = fooNode(foo_exp)
print "The value of newNode is ",newNode
return newNode
使用a = FooBar(foo_exp)
调用时的以下结果:
The Value of NewNode is foo_exp - When called inside the class FooBar
但是变量a
填充了None类型的值
(好像函数没有返回任何内容)
此函数中的递归是否会导致这种情况?还有其他因素在起作用吗?
A =即使None
被注释掉,也会输入return NewNode
。这让我相信Python在没有显式返回值的函数上返回类型None
。
答案 0 :(得分:1)
你的递归函数有两个分支:如果Bar
(不管是什么)不真实,函数会返回一些新节点。否则,递归调用函数 - 但没有返回值。
因此,如果您希望始终拥有一些返回值,则应确保所有代码路径都返回一些值。例如,您可以从递归函数调用中返回值:
return FooBar(foo_exp)
答案 1 :(得分:0)
您是否遗漏了return
区块中的if
?
if Bar:
update_Foo(foo_exp)
return FooBar(foo_exp)
答案 2 :(得分:0)
else
子句看起来像你的基本情况。你需要返回递归的结果..
return FooBar(foo_exp)