ホームページ >バックエンド開発 >Python チュートリアル >再帰的な Python 関数が時々「None」を返すのはなぜですか?

再帰的な Python 関数が時々「None」を返すのはなぜですか?

DDD
DDDオリジナル
2024-12-23 16:46:10796ブラウズ

Why Does My Recursive Python Function Return `None` Sometimes?

再帰とそれが何も返さない理由について

関数がそれ自体を呼び出すことは、再帰として知られています。これは強力な手法ですが、予期しない結果が発生しないように、戻り値の概念を理解することが重要です。

指定された 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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。