Python: 関数の引数の指定方法

関数に渡す値を「引数」といいます。 関数側では、受け取った引数を元に何らかの処理を行います。

基本的な引数の指定方法は次の通りです。
関数名の後の()丸括弧内に引数を指定します。

関数名(引数1, 引数2, ...)

ここでは関数の引数の指定方法や、引数に関連する用語を説明します。

仮引数と実引数

引数を区別するために「仮引数」、「実引数」と呼ぶことがあります。

「仮引数」とは関数定義部分で指定する引数のことです。 定義段階では仮でしかないので仮引数といいます。

def 関数名(仮引数1, 仮引数2, ...):
	処理
	return

「実引数」とは関数を呼び出す部分で実際に指定する引数のことです。

関数名(実引数1, 実引数2, ...)

つまり「実引数」が関数を呼び出す部分の引数、 「仮引数」が関数定義部分の引数のことです。

引数を1つ渡す

引数を1つ渡す場合のコード例です。 「関数名(引数)」と指定します。

# 関数定義
def double(x):
	x = x * 2
	return x

# ------------------

# 関数呼び出し
n = double(10)

print(n)

引数を複数渡す

引数を2つ渡す場合のコード例です。 「関数名(引数1, 引数2)」のように、引数をカンマで区切ります。

# 関数定義
def plus(x, y):
	
	return x + y

# ------------------

# 関数呼び出し
n = plus(3, 5)  # 8

引数なしの場合

引数がない場合のコード例です。 「関数名()」と記述します。

# 関数定義
def func():
	
	print("hello")

	return

# ------------------

# 関数呼び出し
func()  # hello

値渡しと参照渡し

Pythonでは変更不可のオブジェクトは値渡しとなり、 変更可能なオブジェクトは参照渡しとなります。

変更不可のオブジェクトとしては、文字列・整数・タプルなどがあり、 引数としてこれらを指定した場合は値渡しとなります。
変更可能のオブジェクトとしてはリスト・ディクショナリ・セットなどがあり、 引数としてこれらを指定した場合は参照渡しとなります。

関連ページ: Pythonの主なデータ型

デフォルト引数を指定

引数にはあらかじめデフォルト値を与えておくこともできます。 その場合、関数の引数定義部分に「引数 = デフォルト値」と記述します。 そして関数を呼び出すときに引数が省略された場合、デフォルト値が適用されます。

def 関数名(引数 = デフォルト値)

例えば引数が3つある場合、次のように引数を指定できます。

# すべての引数にデフォルト値を指定
def func(a = 1, b = 1, c = 1)

# 最後の2つに指定
def func(a, b = 1, c = 1)

# 最後だけ指定
def func(a, b, c = 1)

# デフォルト値なし
def func(a, b, c)

注意点として、ある引数にデフォルト引数を指定した場合、 その右側にある引数にもデフォルト引数を指定する必要があります。

ですから次のような指定はできません。

# 最初だけ指定はNG
def func(a = 1, b, c)

# 真ん中だけ指定はNG
def func(a, b = 1, c)

# 前半2つだけ指定はNG
def func(a = 1, b = 1, c)
Python