[解決済み] 空のリストであるデフォルトパラメータを避けるための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
をデフォルトとして、明示的に
テストする
を関数本体に記述します。
関連
-
[解決済み】cアンダースコア式`c_`は、具体的に何をするのですか?
-
[解決済み] urllib、urllib2、urllib3、requestsモジュールの違いは何ですか?
-
[解決済み] pipでインストールしたすべてのパッケージを削除する最も簡単な方法は何ですか?
-
[解決済み] PythonでHTTP GETを行う最短の方法は何ですか?
-
[解決済み] リストをチャンクで反復処理する最も "pythonic "な方法は何ですか?
-
[解決済み] 通常のPythonのリストと比較した場合、NumPyの利点は何ですか?
-
[解決済み] 2つのディクショナを結合する(両方に現れるキーの値を追加する)pythonicな方法はありますか?
-
[解決済み】type()とisinstance()の違いは何ですか?)
-
[解決済み】Pythonで複数のコンストラクタを持つためのクリーンでPythonicな方法は何ですか?
-
[解決済み】「if x: return x」文を回避するためのPythonicな方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
pythonサイクルタスクスケジューリングツール スケジュール詳解
-
python implement mysql add delete check change サンプルコード
-
Python 可視化 big_screen ライブラリ サンプル 詳細
-
pyCaret効率化乗算器 オープンソース ローコード Python機械学習ツール
-
Python LeNetネットワークの説明とpytorchでの実装
-
[解決済み】Python elifの構文が無効です【終了しました
-
[解決済み】Flask ImportError: Flask という名前のモジュールがない
-
[解決済み】Python: OverflowError: 数学の範囲エラー
-
[解決済み] 最小限の驚き」と「変更可能なデフォルトの引数
-
[解決済み] "is None" と "== None" の違いは何ですか?