ホームページ > バックエンド開発 > Python チュートリアル > Python 関数でデフォルトのパラメーターを使用するときの予期しない動作を回避するにはどうすればよいですか?

Python 関数でデフォルトのパラメーターを使用するときの予期しない動作を回避するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-12-17 04:08:25
オリジナル
927 人が閲覧しました

How Can I Avoid Unexpected Behavior When Using Default Parameters in Python Functions?

Python でのデフォルト パラメータの落とし穴の回避

Python では、空のリストをデフォルト パラメータとして使用したくなる場合があります。ただし、デフォルト パラメーターの早期バインディングが原因で、予期しない動作が発生する可能性があります。

次のような関数について考えてみましょう。

def my_func(working_list=[]):
    working_list.append("a")
    print(working_list)
ログイン後にコピー

最初は、デフォルト パラメーターは期待どおりに機能します。ただし、後続の呼び出しでは同じリストが更新され続けるため、呼び出しごとに出力されるリストが増加します。

これを回避するには、関数本体でデフォルト パラメーターの存在を明示的にテストし、次の場合は新しい空のリストを割り当てます。必要:

def my_func(working_list=None):
    if working_list is None:
        working_list = []
    working_list.append("a")
    print(working_list)
ログイン後にコピー

または、ワンライナー:

working_list = [] if working_list is None else working_list
ログイン後にコピー

余談: PEP 8 では、None のようなシングルトンとの比較には is None を使用することを推奨しています。誤った結果が生じる可能性があるため、== None の使用は避けてください。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート