Pythonにおける可変オブジェクトの扱い:デフォルト引数とリストの複製に潜む罠

関数におけるデフォルト引数の評価タイミング Pythonでよく遭遇する落とし穴の一つに、関数のデフォルト引数としてリストなどのミュータブル(可変)なオブジェクトを指定してしまうことがあります。以下の関数 collect_data を例に見てみましょう。 def collect_data(value, container=[]): container.append(value) return container この関数を、特定のリス ...

9月5日 03:41 投稿

Pythonにおける引数渡しの実際の動作

Pythonの引数渡しは、CやJavaなどの言語で見られる「値渡し」(pass by value)や「参照渡し」(pass by reference)とは根本的に異なります。Pythonでは、すべての値がオブジェクトであり、変数は単にそのオブジェクトへの名前付き参照に過ぎません。このため、引数渡しは正確には「オブジェクト参照による渡し(pass by object reference)」と呼ばれます。 以下のコー ...

7月7日 18:48 投稿

Pythonのデータ構造:リストとタプル

リストとタプルの基本概念 Pythonのリストとタプルは、どちらも任意のデータ型を格納できる順序付きコレクションです。多くのプログラミング言語ではコレクション内のデータ型が統一されている必要がありますが、Pythonではこの制約はありません。 主な違い リストは動的で、長さを変更したり、要素を追加・削除・変更したりできます(mutable)。 一方、タプルは静的で、 ...

5月20日 18:57 投稿