1. ホーム
  2. python

[解決済み] 空のリストであるデフォルトパラメータを避けるためのpythonicな方法は何ですか?

2022-04-20 03:47:34

質問

時々、デフォルトのパラメータが空のリストであることが自然に思えることがあります。しかし Python はこのような状況で予期せぬ振る舞いをします。 .

例えば、ある関数があったとします。

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

最初に呼ばれたときはデフォルトで動作しますが、それ以降に呼ばれたときは、既存のリストを更新します(1つの "a" を呼び出し、更新されたバージョンを表示します。

では、私が望む動作(呼び出しのたびに新鮮なリスト)を得るためのPythonicな方法は何でしょうか?

どのように解決するのですか?

def my_func(working_list=None):
    if working_list is None: 
        working_list = []

    # alternative:
    # working_list = [] if working_list is None else working_list

    working_list.append("a")
    print(working_list)

ドキュメント を使うべきであると言っています。 None をデフォルトとして、明示的に テストする を関数本体に記述します。