理解递归以及为什么它不返回任何内容
当函数调用自身时,称为递归。这可能是一项强大的技术,但理解返回值的概念对于防止遇到意外结果至关重要。
在给定的 Python 代码中:
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",函数按预期工作并返回输入。但是,当用户输入无效字符然后输入有效字符时,就会出现问题。问题源于if条件中的递归调用。
当my_var不是“a”或“b”时,函数正确提示用户重试。但是,对 get_input() 的递归调用缺少递归函数返回值的 return 语句。如果没有正确的返回,当函数结束时,Python 会隐式返回 None。
要解决此问题,应修改递归调用以返回递归函数的结果:
if my_var != "a" and my_var != "b": print('You didn\'t type "a" or "b". Try again.') return get_input()
通过此更改,该函数将在用户提供有效输入后正确返回 my_var,从而防止返回 None。
以上是为什么我的递归 Python 函数有时会返回'None”?的详细内容。更多信息请关注PHP中文网其他相关文章!