0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[光-Hikari-のPython]06章-02 関数(引数と戻り値1)

Last updated at Posted at 2020-06-15

#[Python]06章-02 引数と戻り値1
前節で関数を定義する際には以下のように行うと説明しました。

.py
def 自作関数名(引数):
    関数を呼び出した際に実行される処理内容

前回、この中の引数について説明しなかったので、それについて説明していきたいと思います。
また、本来関数は何か値を入れたら、その処理結果した結果を何か返すものです。値を返すといった、戻り値についても触れていきます。

##関数の引数
関数を定義して呼び出す際に、引数を関数に渡して処理を行うことができます。chap06を新たに作成し、その中に、samp06-02-01.pyというファイル名でファイルを作成し、以下のコードを書いてください。(前回のプログラムを少し改良しています。)

samp06-02-01.py
def greet_func(name):
    print('関数内で実行しています')
    print(f'{name}さん、こんにちは!')

print('今からgreet_func関数を呼び出します。')
name = input('名前を入力してください:')

#greet_func関数を呼び出す
greet_func(name)

print('関数内の処理は終了しました!')

【実行結果】
今からgreet_func関数を呼び出します。
名前を入力してください:山田太郎
関数内で実行しています
山田太郎さん、こんにちは!
関数内の処理は終了しました!

プログラムの説明をしていきます。まず、名前を入力(今回は**'山田太郎'**としています)し、greet_func関数を呼び出しています。呼び出しの際に、**name = '山田太郎'**としているため、関数を呼び出す際には、**greet_func('山田太郎')**としていることと同じです。

image.png

この時の関数を呼び出している側であるgreet_func(name)のnameの個所を**実引数(じつひきすう)**と言います。

次に、呼び出された以下の関数内での実行です。

.py
def greet_func(name):
    print('関数内で実行しています')
    print(f'{name}さん、こんにちは!')

このとき、greet_func(name)のnameには**'山田太郎'**という値が代入されます。そして、この関数内では現在、**name = '山田太郎'となっているため、print(f'{name}さん、こんにちは!')の個所のnameには'山田太郎'**が代入され、「山田太郎さん、こんにちは!」と出力されるのです。

image.png

この時の呼び出される側の関数であるgreet_func(name)のnameの個所を**仮引数(かりひきすう)**と言います。

##関数の引数もう1つの例
もう1つ例を見てみましょう。chap06を新たに作成し、その中に、samp06-02-02.pyというファイル名でファイルを作成し、以下のコードを書いてください。

.06-02-02.py
def plus_func(a, b, c):
    print('関数内で和の計算をしています。')
    print(a + b + c)

plus_func(3, -4, 1)
print('関数内の処理は終了しました。')

【実行結果】
関数内で和の計算をしています。
0
関数内の処理は終了しました。

今回は、実引数は文字列でなく数値としています。数値の場合も同じで、plus_func関数を呼び出す際に3つの値を渡しています。なお、実引数は1つだけでなく、いくつでも渡すことは可能です。そして仮引数に渡された数値はplus_func関数内で計算され、結果を出力しています。

##関数の戻り値
06章-01で説明しましたが、数学における関数で、

f(x) = x^2+3x+4

があったとき、x=2とすると、

f(2) = 2^2+3・2+4
=14

と求めることができました。
つまり、xという実引数に2を代入して、計算をすると14という結果が返ってきます。この返ってくる値を戻り値と言います。

なお、戻り値は基本的には1つとなりますので、注意してください。

さて、今まで書いてきたプログラムでは関数内で処理して終了であり、戻り値がありません。今回はこの結果を返す方法を説明します。

まず、戻り値を返すにはおおよそ以下のようにプログラムを書きます。

.py
def 自作関数名(引数):
    関数を呼び出した際に実行される処理内容
    return 関数内での処理結果

先ほどの関数、

f(x) = x^2+3x+4

について、プログラムにて実装をしてみましょう。chap06を新たに作成し、その中に、samp06-02-03.pyというファイル名でファイルを作成し、以下のコードを書いてください。

.py
def calc_func(x):
    print('関数内で実行します')
    f = (x ** 2) + (3 * x) + 4
    ##計算結果fを返す
    return f

#関数の呼び出し時に実引数を2としている
f = calc_func(2)
print(f'関数から返ってきた値:{f}')

【実行結果】
関数内で実行します
関数から返ってきた値:14

まず、呼び出し元の関数の実引数に2を指定しています。それを呼び出し先の関数の仮引数xに指定しています。
そして、関数内のxに2を代入して計算してます。

image.png

次に、計算結果である14をfに代入し、そのfを関数の呼び出しもとに値を戻しています。この値を戻り値と言います。

image.png

そして、**f = calc_func(2)**の個所が、f = 14となるので「関数から返ってきた値:14」と出力されるのです。

##最後に
関数の引数と戻り値は、自分で定義した関数ですと最初はわかりずらいですが、実は今まで使った組み込み関数でも無意識のうちに使っているのをお判りでしょうか?
例えば、len関数であれば、len('hello')としたときに、'hello'は実引数になりますし、5文字なので実行結果である5戻り値となります。

次回は引数と戻り値に関するお話をもう少ししていきたいと思います。

###【目次リンク】へ戻る

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?