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 投稿