ホームページ >バックエンド開発 >Python チュートリアル >Python の変更可能なデフォルト パラメーターによる予期せぬ動作を回避するにはどうすればよいですか?

Python の変更可能なデフォルト パラメーターによる予期せぬ動作を回避するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-15 14:08:10529ブラウズ

How Can I Avoid Unexpected Behavior with Mutable Default Parameters in Python?

Python のデフォルト パラメーターに関する問題の回避

Python のデフォルト パラメーターを使用する場合、特に可変引数の場合、特定の複雑さが発生する可能性があります。これらの問題を防ぐには、デフォルト パラメーターの動作に対処することが重要です。

たとえば、次の関数を考えてみましょう:

def my_func(working_list=[]):
    working_list.append("a")
    print(working_list)

最初の呼び出しでは、空のリストのデフォルト パラメーターは期待どおりに機能します。 。ただし、後続の呼び出しでは予期しない動作が発生し、デフォルトのパラメーター (最初は空のリスト) が以前の実行から追加された要素を維持します。

この問題を解決し、関数呼び出しごとに新しい空のリストを作成するために、Python は 2 つのアプローチを提供します。 :

1.なしのテスト:

def my_func(working_list=None):</p><pre class="brush:php;toolbar:false">if working_list is None: 
    working_list = []
working_list.append("a")
print(working_list)

2.条件付き代入:

def my_func(working_list=None):</p><pre class="brush:php;toolbar:false">working_list = [] if working_list is None else working_list
working_list.append("a")
print(working_list)

どちらのソリューションも、新しい空のリストは要素を追加する前に初期化されるため、各関数呼び出しが分離され、以前のリストからのデータの蓄積が防止されます。処刑

以上がPython の変更可能なデフォルト パラメーターによる予期せぬ動作を回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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