理解遞歸以及為什麼它不回傳任何內容
當函數呼叫自身時,稱為遞歸。這可能是一項強大的技術,但理解傳回值的概念對於防止意外結果至關重要。
在給定的 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中文網其他相關文章!