Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonの再帰関数は、関数がそれ自体を呼び出すたびに新しい名前空間を作成しますか?


はい、関数呼び出し(再帰呼び出しだけでなく、任意の関数呼び出し)によって新しい名前空間が作成されます。ただし、パラメータとして指定された場合、OBJECTSは参照によって渡されます。

したがって、新しい名前空間はこの参照の独自のコピーを取得しますが、それでも呼び出し元の関数と同じオブジェクトを参照します。そのオブジェクトのコンテンツを変更すると、呼び出し元の関数の変更に気付くでしょう。

具体的には、インタープリターが関数の呼び出しに遭遇すると、フレームオブジェクトが作成され、フレームスタックにプッシュされます。フレームが作成されるたびに、そのフレームには独自のプライベート名前空間が与えられ、フレーム内の各変数が再定義されます。


  1. Pythonの名前空間とは何ですか?

    名前空間は、スコープを実装する方法です。 Pythonでは、各パッケージ、モジュール、クラス、関数、およびメソッド関数は、変数名が解決される「名前空間」を所有しています。関数、モジュール、またはパッケージが評価される(つまり、実行が開始される)と、名前空間が作成されます。それを「評価コンテキスト」と考えてください。関数などの実行が終了すると、名前空間は削除されます。変数は削除されます。さらに、名前がローカル名前空間にない場合に使用されるグローバル名前空間があります。 各変数名はローカル名前空間(関数の本体、モジュールなど)でチェックされ、次にグローバル名前空間でチェックされます。 変数は通

  2. Pythonで再帰関数を作成するにはどうすればよいですか?

    再帰はプログラミングメソッドであり、関数はその本体でそれ自体を1回以上呼び出します。通常、この関数呼び出しの戻り値を返します。関数定義が再帰に従う場合、この関数を再帰関数と呼びます。 プログラムで使用するには、再帰関数を終了する必要があります。すべての再帰呼び出しで問題の解決策が小さくなり、さらに再帰することなく問題を解決できるベースケースに向かって移動すると、終了します。呼び出しで基本ケースが満たされない場合、再帰によって無限ループが発生する可能性があります。 例 次のコードは、再帰的なPython関数を使用して最初のn個の自然数の合計を返します。 def sum_n(n):