記事の内容
この記事では、値渡し(あたいわたし)と参照渡しの違いについて説明します。
なお、このコードはPythonの3系で書かれています。
目次 [非表示]
値渡しと参照渡し
メソッドに数字を渡した場合の動作が、値渡しです。
メソッドの中では値が変わっていますが、メソッドの外で値を見ても、元のままであることがわかります。
一方で、メソッドに配列を渡した場合の動作が、参照渡しです。
メソッドの中で配列に値を追加していますが、メソッドの外でも値が追加されています。
# 数字に値を追加 | |
v1 = 10 | |
def add_val(value): | |
value += 10 | |
print(value) | |
add_val(v1) | |
# 20 | |
# 元の値であるv1の値は変わっていません | |
print(v1) | |
# 10 | |
# listに値を追加 | |
list_1 = [1, 2, 3, 4, 5] | |
def add_list(value): | |
value.append(6) | |
print(value) | |
add_list(list_1) | |
# [1, 2, 3, 4, 5, 6] | |
# 元の値であるlist_1の値も変わっています | |
print(list_1) | |
# [1, 2, 3, 4, 5, 6] |
まとめ
この記事では、値渡しと参照渡しの違いについて説明しました。
厳密に言えば、配列の参照渡しは、「参照渡しに見える値渡し」で「共有渡し」と呼ぶそうです。
でも、初心者としての理解ならば、「配列の動作は参照渡し」ということで十分です。
Good luck for your engineer life!