単純な制御ステートメントの場合は、
リーリーx > 0 と判断された場合、else ステートメントは実行されないことは誰もが知っています。
Python はインタープリタ型言語です。関数の場合は例 11、Java の場合、コード行 test1() が関数 test1 の呼び出しを実行しない場合、プログラム全体は基本的に無意味となり、メモリ割り当ては行われず、実行も行われません。ただし、Python の場合、test1 関数オブジェクトが作成され、test1 の一連の操作が保存されます。これらの操作は実行されません。プログラム全体が test1 を呼び出さなくても、プログラムが実行されている限り、が終了しない場合、test1 は常にメモリ内に存在します。
その理由は、プログラムの実行後、関数 test1 が現在のモジュール オブジェクト、つまり
module __main__
の属性になるためです。 3. 関数名「test1」については、この関数オブジェクトを参照しているため、関数が呼び出されなくても、ガベージ コレクション メカニズムはそれをリサイクルしません
入れ子関数の例 2
将来的には、この質問を 2 つの異なる質問に分割することをお勧めします。
(1) この関数は呼び出されません。Python には参照カウントという別のメモリ管理戦略があります。「原則: オブジェクトが他のオブジェクトによって参照された回数を記録します。このオブジェクトへの参照が削除されると、参照カウントも記録されます」 0 に減少すると、オブジェクトは解放されます。」したがって、参照カウント中にリサイクルされるべきだったと思います。
(2) 呼び出されるかどうかは、オブジェクトの参照が削除されているかどうか、および参照サイクルがあるかどうかによって決まります。ここの電子メール ディスカッション スレッドにも同様の議論があります。それがあなたの質問に答えているかどうかはわかりません。