Python関数の引数渡しのルールは何ですか
Pythonでは、関数の引数の渡し方はこうだ。
- 不変なオブジェクトの引数:不変なオブジェクト(数値、文字列、タプルなど)を関数引数として渡した場合、実際にはオブジェクトの値のコピーが渡されます。関数内で引数を変更しても、元のオブジェクトには影響ありません。
- 可変オブジェクトをパラメーターに渡すとき、実際にはオブジェクトへの参照が渡されます。元のオブジェクトは、関数の内部でパラメーターを変更すると影響を受けます。
- 引数に既定値を指定できる。関数を呼び出す際、その引数が渡されなかった場合に既定値が使用される。既定値は関数定義時に一度だけ評価され、呼び出し時には既定値が渡されない場合にその既定値が常に使用されます。
- キーワード引数とは、関数の呼び出し時に引数の値をその引数の名前で指定できるもので、関数の定義時の順番に従って引数を渡す必要がありません。
- 不定個数の引数:関数の定義時に*argsを使用すると可変個数の位置引数として表示でき、**kwargsを使用すると可変個数のキーワード引数として表示できます。これにより、関数は任意個数の引数に対応できます。
不変オブジェクトと可変オブジェクトの場合、関数内で引数に代入しても、元オブジェクトへの参照は変わりません。関数内で引数に代入すると、引数への参照が変更されますが元オブジェクトの参照は変わりません。