【Python】かんたんな関数の書き方、引数と戻り値【入門第24回】
目次
関数とは?
こんにちは、narupoです。
今回はPythonの関数をやります。
関数とは一体何なのか?
関数とは、よくある処理をまとめる機能です。
この関数を使えるようになると、小規模以上のプログラムが書けるようになります。
将来的に自分でアプリなどを作りたい場合は必須の機能なので、この記事で覚えるようにしましょう。
具体的には↓を見ていきます。
関数の役割
関数の形
関数名
引数
戻り値
関数の役割
さっきも書きましたが、関数とはよくある処理をまとめる機能でした。
これはどういうことなのか?
具体例を見てみたいと思います。
たとえば↓のようなコードがあったとします。
:::python
print('我々は')
print('宇宙人です')
print('我々は')
print('宇宙人です')
「我々は」「宇宙人です」とそれぞれ2回出力してますが、「我々は」「宇宙人です」をひとつにまとめることができたら、コードがもっと小さくなります。
こういう場合は↓のようにして関数を作って、処理をまとめます。
:::python
def we_are_alien():
print('我々は')
print('宇宙人です')
we_are_alien()
we_are_alien()
↑のwe_are_alien
というのが関数です。
def we_area_alien():
というところで関数を作って、we_are_alien()
というところで関数を呼び出しています。
このように、関数というのは「作って、呼び出す」というのがセットになっています。
関数は作るだけだと意味が無いのです。呼び出す必要があります。
では、この関数を作るという点をもう少し詳しく見てみたいと思います。
関数の形
まず関数の作り方、定義の方法についてです。
関数は↓のように作ります。
def 関数名(引数, 引数, ...):
実行内容
def
と書いて関数名、それからカッコで引数を囲ってコロン(:
)、そしてインデントして実行内容を書きます。
↑の内、引数, 引数, ...
は省略することができます。
よって関数は↓のように作ることができます。
:::python
def myfunc():
print('私の関数です')
↑の関数を呼び出すには↓のようにします。
:::python
myfunc()
↑のコードの実行結果は↓のようになります。
私の関数です
ちなみにmyfunc
というのはmy function
の略で、function
は関数のことです。
この時、関数名は自由に名付けることができます(といっても決まりはありますが)。
関数名
関数名についてですが、関数名に使える文字は決まっています。
使える文字は↓の通りです。
小大文字の英字
アンダーバー(_)
数字
↑の内、名前を数字で始めることはできません。
なので↓のような関数名になります。
:::python
my_func
myFunc
My_Func
myfunc_123
_myfunc
関数名には日本語も使うことが出来るんですが、あまり一般的ではありません。
最初は英字の関数名に慣れるようにするといいでしょう。
引数
もう一度、関数の形を見てみましょう。
def 関数名(引数, 引数, ...):
実行内容
↑の内、引数(ひきすう)というのはどういうものなのか?
引数とは、関数の呼び出し時に渡せる値です。
たとえば↓のような関数を作ります。
:::python
def myfunc(arg):
print(arg)
カッコの中のarg
というのが引数です。
その引数をprint
で出力していますね。
これはこの関数の呼び出しとセットで見るとわかりやすいです。
たとえば↓のようなケースです。
:::python
def myfunc(arg):
print(arg)
myfunc(123)
myfunc
関数を呼び出すときに、カッコの中に123
と書いていますが、これが引数で、関数内ではarg
になります。
実引数と仮引数
正確には関数の呼び出し時の引数を実引数(↑の例では123)と言い、関数の引数を仮引数(↑の例ではarg)と言います。
ここでは両方とも引数と呼んでいます。
関数を呼び出すときに渡している123
という値は、関数の引数arg
に入ります。
よって、print(arg)
では123
と出力されます。
arg
には123
という値が入っているからですね。
引数の数は増やすことができます。
増やしても基本的には変わりません。
たとえば↓のような関数を見てみます。
:::python
def myfunc(arg1, arg2):
print(arg1, arg2)
myfunc(123, 456)
↑のコードの実行結果は↓のようになります。
123 456
myfunc(123, 456)
というところに注目してください。
ここはmyfunc
関数を呼び出しているところです。
このとき、カッコの中に123, 456
という風に引数を渡しています。
このように関数の呼び出しではカンマ(,
)で区切って複数の引数を渡すことができます。
引数はカンマで区切られているので、123
と456
というのはそれぞれ別の引数です。
この2つの引数は123
がarg1
に、456
がarg2
に入ります。
:::python
def myfunc(arg1, arg2):
...
つまり、関数呼び出しのときに渡した引数の順番が、そのまま関数の引数の順番になるわけですね。
なので↓のようにすると、
:::python
myfunc(456, 123)
456
はarg1
に、123
はarg2
に入ります。
引数名
引数名は自由に決めることができます。
自由と言っても、引数名で使える文字は決まっています。
↓の通りです。
小大文字の英字
アンダーバー(_)
数字
引数名を数字で始めることは出来ません。
また、日本語で引数名を書くことも出来ますが、あまり一般的ではありません。
ちなみにarg
というのはargument
の略で、意味は「引数」です。
戻り値
関数から値を得ることも出来ます。
たとえば↓のコードを見てみましょう。
:::python
def myfunc():
return 1
result = myfunc()
print(result)
↑のコードの実行結果は↓のようになります。
1
このとき、関数から得られた値を戻り値と言います。
まず関数の中身を見てみます。
:::python
def myfunc():
return 1
return
というのがreturn
文と呼ばれる、関数から値を返す文です。
return 1
としているので、この関数myfunc
は整数1
を返します。
この関数の戻り値を受け取るには↓のようにします。
:::python
result = myfunc()
myfunc
関数を呼び出して、左辺のresult
変数に戻り値を入れています。
よって変数result
には1
が入ります。
そのあとresult
をprint
で出力しているので出力結果は1
になるわけです。
return文
return
文というのは関数などから値を戻す文です。
このreturn
文が実行されると、その時点で関数は終了します。
たとえば↓のようなケース。
:::python
def myfunc():
return 1
print('この処理は呼ばれません')
↑のコード、関数内のprint
は実行されません。
print
の前にreturn
文が実行されているからです。
また、return
文は値を省略することも出来ます。
たとえば↓のようにです。
:::python
def myfunc():
return
この場合、関数myfunc
の戻り値はNone
になります。
None
については↓の記事を参照してください。
None
は何もない状態を表すオブジェクトでした。
つまり関数の戻り値は「ない」ということになりますね。
実際にはNone
というオブジェクトを関数myfunc
は返しているので、「ない」というのはおかしいんですが、表現的には「この関数の戻り値はない」と表現します。
↑の関数を呼び出して↓のように戻り値を受け取っても、
:::python
result = myfunc()
print(result)
結果はNone
になります。
None
たとえば、↓のようにそもそもreturn
文を省略している関数も戻り値はNone
になります。
:::python
def myfunc():
print('戻り値はNoneです')
サンプルコード
今まで紹介した関数の機能を使ったサンプルコードです。
:::python
def mul(x, y):
return x * y
result = mul(2, 3)
print(result)
↑のコードの関数mul
は引数x
とy
を乗算して戻り値を返します。
その戻り値をprint
で出力しているので、実行結果は6
になります。
おわりに
関数を使えるようになるとプログラミングが楽になります。
おぼえるっきゃない
関数にはまだまだ機能があるのですが、今回はとりあえず最低限の機能をまとめました。
次回に続きます。