関数の戻り値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がでてきた関数の「何か」を別の関数で使っていると理解しておきましょう。
コメント