Python-为什么我的递归函数返回None
我有一个自称的函数:
def get_input(): my_var = input('Enter "a" or "b": ')
if my_var != "a" and my_var != "b":
print('You didn\'t type "a" or "b". Try again.')
get_input()
else:
return my_var
print('got input:', get_input())
现在,如果我只输入"a"或 "b"
,则一切正常:
Type "a" or "b": agot input: a
但是,如果我输入其他内容,然后输入 "a"或 "b"
,则会得到以下信息:
Type "a" or "b": purpleYou didn't type "a" or "b". Try again.
Type "a" or "b": a
got input: None
我不知道为什么get_input()
要回来None
,因为它应该只回来my_var
。这None是哪里来的,我该如何修复我的功能?
回答:
之所以返回,是None因为当你递归调用它时:
if my_var != "a" and my_var != "b": print('You didn\'t type "a" or "b". Try again.')
get_input()
..你不返回该值。
因此,当确实发生递归时,返回值将被丢弃,然后你就无法使用该函数了。退出函数的末尾意味着python
隐式返回None,就像这样:
>>> def f(x):... pass
>>> print(f(20))
None
因此,而不是只是调用 get_input()
你的if说法,你需要return
它:
if my_var != "a" and my_var != "b": print('You didn\'t type "a" or "b". Try again.')
return get_input()
以上是 Python-为什么我的递归函数返回None 的全部内容, 来源链接: utcz.com/qa/417280.html