Pythonにおける関数・引数の使い方(def)について入門者向けにまとめました。
関数・引数とは
動画解説版
本ページの内容は以下動画で解説しています。
関数とは、「処理のまとまり」のことです。
プログラムの規模が大きくなるほど、関数で処理を分けて記述した方が、効率的で分かりやすいコードを書くことができます。
中学数学や高校数学でも「1次関数」「2次関数」が出てきましたが、プログラムでも考え方はほとんど同じです。
例
例えば、次のような1次関数について考えます。
(1)
このとき、を関数、を変数といいます。
この関数は、「変数xを2倍して1を加える処理をまとめたもの」と言えます。
一度そのような関数を定義しておけば
(2)
という風に処理を簡潔に記述できます。
プログラムの世界では、変数xのことを「引数」といいます。
関数定義、呼び出し、返り値(def文、return文)
Pythonでは、関数定義に「def 関数名:」を使います。
C言語のように関数に型を定義する必要はありません。
# -*- coding: utf-8 # 関数定義 def func(): return 0 # 関数の呼び出し x = func() # 返り値を出力 print(x) # 0
■return文について
4行目にある「return」は関数を呼び出した時にreturnの右に記述した値を返します。
この返す値のことを「返り値」や「戻り値」といいます。
このサンプルコードでは、「return 0」となっているので、func関数を呼び出すたびに常に0を返します。
そのため、変数xには0が代入されます。
引数の定義
引数とは、「関数に代入する値」のことです。
関数で処理させるのに必要なデータを渡す役割を持ちます。
関数同様、引数も型を定義する必要はありません。
書式
def 関数名(引数名1, 引数名2, ...):
# -*- coding: utf-8 # 関数定義 def func(a, b): c = a + b c = c * 2 return c # 関数呼び出し(1回目) x = func(1, 2) print(x) # 6 # 関数呼び出し(2回目) x = func(4, 5) print(x) # 18
上記のプログラムの場合、「関数の返り値は2つの引数を加算した値×2」となっています。
このように関数を定義しておけば、同じ計算式を2回も書く必要がなく、効率的で分かりやすい記述ができます。
計算式や処理が複雑になるほど、関数が便利になっていきます。
【注意】引数に渡した変数は値かリストによって処理が異なる
Pythonでは、関数の引数に渡した変数は、「値」か「リスト」によって次のように処理が異なります。
項目 | 概要 |
---|---|
値 | 関数に渡した値が変化しても、呼び出し元の変数には影響ありません。 |
リスト | 関数に渡したリストの要素が変化すると、呼び出し元のリストにも影響がでます。 |
そのため、リストを引数にして渡した場合、要素を変更したリストをreturn文で返す必要はありません。
ソースコード
サンプルプログラムのソースコードです。
# -*- coding: utf-8 -*- # 関数の定義 def fanc(var, array): var = 10 array[0] = 10 var = 0 array = [0, 1, 2] # 関数呼び出し fanc(var, array) print(var) # 0 print(array) # [10, 1, 2]
変数varの呼び出し元の値は変化なしですが、リストlistの要素は呼び出し元も変化しています。
コメント