Pythonでは、関数の引数に配列を渡すときには注意が必要です。特に、配列を値渡しと参照渡しのどちらで渡すかは重要な問題となります。
値渡しと参照渡し
Pythonでは、関数に配列を渡すとき、その配列が値渡しになるか参照渡しになるかによって、関数の挙動が大きく変わります。
値渡し
値渡しは、関数に配列を渡すときに配列のコピーを作成し、そのコピーを関数に渡す方法です。これにより、関数内で配列の要素を変更しても、元の配列には影響を与えません。
Pythonでは、配列の後に [:]
をつけることで値渡しにすることができます。
def hoge(arr):
arr[0] += 1
arr_val = [0, 1]
hoge(arr_val[:])
print(arr_val) # 出力結果: [0, 1]
参照渡し
参照渡しは、関数に配列を渡すときに配列の参照(つまり、配列が格納されている場所)を関数に渡す方法です。これにより、関数内で配列の要素を変更すると、元の配列にも影響を与えます。
def hoge(arr):
arr[0] += 1
arr_ref = [0, 1]
hoge(arr_ref)
print(arr_ref) # 出力結果: [1, 1]
まとめ
Pythonで配列を関数に渡すときには、値渡しと参照渡しの違いを理解することが重要です。値渡しを使えば、関数内で配列を変更しても元の配列に影響を与えません。一方、参照渡しを使うと、関数内で配列を変更すると元の配列も変更されます。適切な方法を選ぶことで、バグを防ぎ、コードの可読性を向上させることができます。