我使用类似于以下的函数在 Python 中遇到了一些奇怪的问题:
def foo(x):
if int(x)!=4:
x = raw_input("Wrong guess, please enter new value: " )
foo(x)
else:
print "Good Job! %s was right"%x
return x
value = foo(x=raw_input("Guess a Number between 1 and 10: "))
print value
例如,如果我输入:“1”然后“2”然后“3”然后“4”,我会打印出以下内容:
Good Job! 4 was right
2
这令人困惑,因为该函数似乎已成功识别正确答案,但在这样做之后,它返回的值是给出的第二个响应,而不是最近的响应。
谁能解释这个递归函数中“x”的绑定发生了什么?