Python 関数(def)の基本

関数とは、そのプログラム内で何度も同じことを繰り返す際に定義することで、同じことを記述することを省略できる便利なオブジェクトです。

Pythonの関数

Pythonでは、関数をdefブロックで定義します。括弧内に仮引数を指定し、return文で戻り値を指定します。

def 関数名(仮引数):
    処理
    return 値

関数名(実引数)

引数とは、関数の外から値を関数に代入したい場合に用います。

関数を定義した際の引数で関数の外から値を受け取る引数を仮引数といいます。

関数を呼び出す際の引数で関数に値を渡す引数を実引数といいます。

戻り値とは、関数で処理した結果を関数の外で使いたいときに用います。

例として、足し算の関数を作ったとします。

def func(x,y):
    z = x + y
    return z 
a1 = func(1,2)
#結果
3
a2 = func(10,20)
#結果
30

このように記述することでa1には3、a2には30が代入されます。

定義した引数の数(仮引数の数)と呼び出した際の引数の数(実引数の数)が多いまたは少ない場合、エラーメッセージが出力されます。

def func(x,y):
    z = x + y
    return z 

a1 = func(1)
#以下結果
TypeError: func() missing 1 required positional argument: 'y'
a2 = func(10,20,30)
TypeError: func() takes 2 positional arguments but 3 were given

初期値を指定

関数の仮引数には、初期値を設定することができます。

関数呼び出し時に実引数を指定しなかった場合、関数定義した際の初期値が指定されます。

def func( x = 10,y = 20 ):
    z = x + y
    return z
a1 = func(0)
#結果
20

上の例では、実引数が1つしかありませんが、仮引数に初期値があるため、xに0、yに20が渡され、計算しています。

キーワード引数と位置引数

また、キーワード引数と呼ばれる「実引数=値」とすることで関数を呼び出す際にどの仮引数にどの値を渡すのかを指定できます。

キーワード引数を利用することで、引数を記述する順番を任意に変えることができます。

キーワード引数を使用しない場合は、関数は、呼び出し側で指定した引数(実引数)が順番に関数定義した際の引数の(仮引数)に順番に代入されます。

このような形式を位置引数と呼びます。

def func( x , y ):
    z = x + y
    return z
a1 = func( 20, 2 )
#結果 位置引数
22
a2 = func( y = 2, x = 20 )
#結果 キーワード引数
22

また、キーワード引数と位置引数の混在も可能です。

注意点として、最初に位置引数を指定して、その後、キーワード引数を記述する必要があります。

でないと、以下のようなエラーメッセージが表示されます。

SyntaxError: positional argument follows keyword argument

def funcc(name,old,height):
    print("I'm "+name+". I'm "+str(old)+" years old. Height is "+str(height)+"cm.")

a1=funcc("Tanaka",23,170)
a2=funcc(old=25,height=181,name="Sato")
a3=funcc("Suzuki",height=172,old=30)
#以下結果
I'm Tanaka. I'm 23 years old. Height is 170cm.
I'm Sato. I'm 25 years old. Height is 181cm.
I'm Suzuki. I'm 30 years old. Height is 172cm.