3ー3:関数の戻り値returnって何?

関数の戻り値returnって何?

関数を使うことを「関数を呼び出す」といいます。

業界用語なので「へぇそうか」と納得して使うことにしましょう。

 

 

次の関数numを実行してみると

def num():
    print("実行されました")

num()

こんな結果が出ます。

実行されました

では次にreturnを使ってみましょう。

def num():
    print("実行されました")

return

結果は

SyntaxError: 'return' outside function

returnはdefの中で使わなくてはいけないというルールがあるようです。

 

では・・・

def num():
    print("実行されました")
    return

ん?

結果がでませんね。returnってどんな指示なんでしょうか?

 

気を取り直して、次のコードを実行してください。

def num(a,b):
    c = a*b

print(num(2,5))

引数a,bをもつ関数numに2と5を代入したものをprintする、ということになっています。

これだけみても、結果が予測できるような・・・

実行結果

None

 

関数numがどんな関数なのかわからないため、Noneが出てきたようです。

 

では次のように書き直してください

def num(a,b):
    c = a*b
    return c

print(num(2,5))

結果は・・・?

 

値が帰ってきましたね。

では次のコードは???

def num(a,b):
     c = a*b
     return c
     print(num(2,5))

これではprintが関数の定義の中に含まれてしまい、実際に printする指示が出せていないですね。

pythonでは行替え、インデント(スペース4つ分)で命令文の意味が変わるのでしたね。

 

結局、returnは関数numを「別の関数で読み込める(呼び出せる)ようにする」コマンドです。

def [関数名]・・・return c は「この関数が他の関数で使われるときには、cで定義された値として使え」という指示でしょう。

なので関数numを定義するdefの中でreturn を書かないといけないのです。

 

正直まだよくわかりません。

 

このコードを実行してみましょう。

def sell(place, price,  num):
    print(place, '支店で', num, '社に', price,  '円の販売があった')
    tt = price * num
    return tt
    
total = sell('東京', 200, 5)
print('売り上げは', total , '円でした')

結果は次のよう。

東京 支店で 5 社に 200 円の販売があった
売り上げは 1000 円でした

 

tt = price * num

は、price * numをttに対応させることしか述べていません。

return tt

と書くことで、ttの値を使えるようになる(出力してくれる、関数に渡した変数priceとnumをttにして返してくれる)ということらしいのです。

ではreturnを消したら?

def sell(place, price, num):
    print(place, '支店で', num, '社に', price,  '円の販売があった')
    tt = price * num

total = sell('東京', 200, 5)
print('売り上げは', total , '円でした')

結果

東京 支店で 5 社に 200 円の販売があった
売り上げは None 円でした

ttの定義も消してみましょう。

def sell(place, price,  num):
    print(place, '支店で', num, '社に', price,  '円の販売があった')

total = sell('東京', 200, 5)
print('売り上げは', total , '円でした')

結果は・・・

東京 支店で 5 社に 200 円の販売があった
売り上げは None 円でした

 

関数sellの引数のうち、のちのちpriceとnumberを使って totalを計算した結果を別の関数printで使いたかった。

sell('東京', 200, 5)

と定義したtotal

price * num

を、別の関数で使いたいのでreturnを使った。

ということでしょう。

 

すっきり理解できないのは私だけですか???

 

returnを使わずに他の書き方で同じ結果を得ることもできるようです。

 

def sell(place, price, num):
    print(place, '支店で', num, '社に', price,  '円の販売があった')

place = '東京'
price  = 200
num = 5
total = price * num

sell(place, price, num)
print('売り上げは', total , '円でした')

結果

東京 支店で 5 社に 200 円の販売があった
売り上げは 1000 円でした

 

returnがでてきたら、 returnがでてきた関数の「何か」を別の関数で使っていると理解しておきましょう。

コメント