我刚开始学习python (v3.2.3),在这个函数中遇到了一个关于return
的奇怪问题:
def test(x):
if x > 9 :
test(x - 10)
else:
print('real value',x)
return x
x = int(input())
y = test(x)
print('this should be real value',y)
当我运行它时,我得到:
45
real value 5
this should be real value None
但我期望:
45
real value 5
this should be real value 5
我尝试在if
之外添加return x
,得到了默认的输入值。有人能解释一下return
是如何工作的吗?
发布于 2012-07-06 13:13:18
返回是缩进的,所以它只在else分支中执行。如果采用第一个分支,则该函数隐式返回None。
您需要将其更改为
return test(x-10)
发布于 2012-07-06 13:13:45
当x > 9
时,您忘记返回值。如果没有返回值,函数将“返回”None
。
https://stackoverflow.com/questions/11356168
复制相似问题