【Python】引数における値渡しと参照渡し

この記事では、Pythonにおける引数の渡し方について学びます。

具体的には、値渡しと参照渡しの違いや、それぞれの影響について解説します。

また、引数の渡し方を選ぶ際の考慮点も紹介します。

Pythonプログラミング初心者の方にとって、引数の渡し方は重要な概念ですので、ぜひ読んでみてください。

目次から探す

引数とは

プログラミングにおいて、関数やメソッドに渡される値のことを引数と呼びます。

引数は関数内で処理される際に使用され、関数の実行結果に影響を与えることがあります。

値渡しと参照渡しの違いとは

値渡しと参照渡しは、引数の渡し方の2つの方法です。

  • 値渡し: 関数に引数を渡す際、引数の値がコピーされて関数内で使用される方法です。関数内で引数の値を変更しても、元の引数の値には影響を与えません。
  • 参照渡し: 関数に引数を渡す際、引数のメモリ上のアドレスが渡され、関数内で引数の値を変更すると、元の引数の値も変更されます。

Pythonにおける引数の渡し方

Pythonでは、デフォルトで値渡しの方式が採用されています。しかし、リストや辞書などの可変オブジェクトを引数として渡す場合には、参照渡しのような振る舞いをすることがあります。

値渡しの例

def change_value(x):
    x = 10

value = 5
change_value(value)
print(value)  # 出力結果: 5

上記の例では、change_value関数にvalueという変数を引数として渡しています。

関数内でxの値を変更しても、valueの値には影響を与えません。

これが値渡しの特徴です。

参照渡しの例

def change_list(lst):
    lst.append(4)

my_list = [1, 2, 3]
change_list(my_list)
print(my_list)  # 出力結果: [1, 2, 3, 4]

上記の例では、change_list関数にmy_listというリストを引数として渡しています。

関数内でlstに要素を追加すると、my_listの値も変更されます。

これが参照渡しの特徴です。

引数の渡し方による影響

引数の渡し方によって、関数の振る舞いやプログラムの動作に影響を与えることがあります。

値渡しの場合の影響

値渡しの場合、関数内で引数の値を変更しても、元の引数の値には影響を与えません。

これにより、関数内での処理が元の値に影響を与えず、予期しない結果を生むことがあります。

参照渡しの場合の影響

参照渡しの場合、関数内で引数の値を変更すると、元の引数の値も変更されます。

これにより、関数内での処理が元の値に影響を与え、予期しない結果を生むことがあります。

引数の渡し方を選ぶ際の考慮点

引数の渡し方を選ぶ際には、以下のような考慮点があります。

  • 値渡しを選ぶ場合: 引数の値を変更しても、元の値に影響を与えたくない場合や、関数内での処理が元の値に影響を与えないことが重要な場合に選びます。
  • 参照渡しを選ぶ場合: 引数の値を変更して元の値に反映させたい場合や、関数内での処理が元の値に影響を与えることが重要な場合に選びます。

Pythonでは、基本的には値渡しの方式が採用されますが、可変オブジェクトを引数として渡す場合には参照渡しのような振る舞いをすることがあるため、注意が必要です。

目次から探す