ここではプログラミング言語”Python”の初心者向けに、基本の文法について説明していきます。Python入門の初心者向けの進み方は以下をクリック。(print関数やコメント機能などの基本機能について知らない方は先に読むことをお勧めします。)
この回では、使いこなせると便利な関数について説明します。
キーワード:関数、入力、出力、引数
関数の概念
関数(function)とは、数学を一通り学んだ方ならば何となく理解していると思います。
例えば、f(x) = x^2 (^は~乗を表す)という関数があったとします。
この変数xの値をいろいろ変えると
x = 0 → f(0) = 0^2 = 0
x = 2 → f(2) = 2^2 = 4
x = -3 → f(-3) = (-3)^2 = 9
というようにf(x)の値が変わりました。この一連の流れは以下のようにして考えることができます。
変数xを入力、f(x)を出力と考えると、関数とは入力に対し、何らかの処理を施した後、その結果を返すというように考えることができます。
そしてプログラミングの関数とはこの変数xを少し拡張して考えるだけでOKです。
数学の関数の場合、xの中身は基本的に数値に関する情報(整数や小数、分数など)です。
この部分をもっと広く例えば、文字やリストなどにすることで、あらゆる情報に対して関数を定義できます。もちろん数字の情報も普通に使うことが出来ます。
このように関数とは、現実あるいはデジタルの入力値に対し、指定された処理をすることで、その結果を返すものです。
定義
Pythonで関数を使うには以下のようにします。
def 関数名(引数1, 引数2, …):
処理内容
return 結果
※引数、returnは無くても良い。
一つ一つ説明していきます。
まず関数を定義するさいは、defを使います。defは英語でdefinition(定義)の略です。
関数名のところには自分で好きな関数の名前を作ることができます。しかし、その名前を見た時に、どのような処理をする関数なのかがある程度分かる名前にしましょう。
次に( )の中の引数に注目しましょう。引数とは、処理内容で利用できる変数のことです。ここは関数の入力の立ち位置にあります。
引数には任意の変数を置くことができ、カンマで複数の引数を持つことができます。
ex) x, y, z
そしてfor、ifでも紹介しましたが、必ずコロン(:)と各行にはインデント(半角で4個分のスペース)を忘れずに置きましょう。
処理内容には実行したい内容を書きます。
最後のreturnは戻り値と呼ばれるものです。ここに関数の出力部分を書きます。
また、引数とreturnの部分は無くても関数として作用します。その場合は以下のような形になります。
def 関数名( ):
処理内容
上の場合は引数も戻り値もない場合です。片方しかない関数も定義できます。
関数の例
ここでは関数の練習のために、いくつか簡単な関数を定義してみましょう。
最初に和の計算をしてくれる関数を定義してみます。
その前にどのような構成にするか考えます。
今回は二つの引数(入力)から和を計算しその値を結果として返すというものにしたいと思います。
#和を計算する関数
def add(x, y):
return x + y
#表示
print(add(5, 5))
print(add(20.5, 19.5))
#結果
10
40.0
上の例ではx、yの二つの引数を持ち、戻り値にはx+yを直接指定します。これによって二つの変数の和をとる関数を作ることができました。
関数を利用するには、関数名(引数, 引数, …)という形で利用することができます。これをまた別の変数に代入することもできますし、今回のように直接print関数で表示もできます。
この関数の戻り値がないパターンはどうなるでしょうか?
つまり、関数内部でprint関数を呼びます。
#和を計算する関数, 戻り値がない
def add(x, y):
print(x + y)
add(100,100)
add(-100,-100)
#結果
200
-200
上の例では、関数内部に直接print関数を書くことで、ただadd関数を呼び出すだけで計算を行ってくれました。
では、このadd関数を拡張して簡易的な電卓関数を作ってみます。
#電卓関数
def cal(x, y, option):
if option == '+':
print(x + y)
elif option == '-':
print(x - y)
elif option == '*':
print(x * y)
elif option == '/':
print(x / y)
else:
print('Error')
cal(100, 50, '+') #和
cal(100, 50, '-') #差
cal(100, 50, '*') #積
cal(100, 50, '/') #商
cal(100, 50, '#') #エラー
#結果
150
50
5000
2.0
Error
上の例では、三つめの引数としてoptionを指定できるようにしました。これによって和・差・積・商のいずれかの計算を行ってくれるように拡張しました。
このように関数は自分のオリジナルのものを作成することができるのが便利な点です。
また、同じ動作をするコードを書く必要がある場合に役立ちます。今回の例では、簡単に書ける量でしたが、これが何千回行う必要があるとしたら絶望的ですよね。
こんなときにfor文と関数を利用すれば簡単に書けます。
#結果は量が多いため省略
def hello_world():
print("Hello World!")
for i in range(1000):
hello_world() #関数の呼び出し
上のようにすれば1000回の作業を二行で書くことが出来ます。
ちなみにhello_world関数は、引数と戻り値がないパターンの関数です。呼びだすときは単に関数名( )とするだけでOKです。
まとめ
1.関数とは入力に対して何らかの処理をした結果を出力する。
2.関数の定義
def 関数名(引数1, 引数2, …):
処理内容
return 戻り値
3.関数の呼び出し方
関数名(引数1, 引数2, …) or 変数=関数名(引数1, 引数2, …) or 他の関数( 関数名(引数1, 引数2, …))
4.関数を使うメリット
・自分オリジナルの関数を作れるので自由度が高い。
・同じ動作をするコードがあるときに、一つにすることができる。
ミニクイズ
クイズは全部で5問あり、正解するごとに難しくなります。
復習してみてね。
コメント