#returnについて
関数の最後にいつも書いてありましたが、あまり意味は分かっていませんでした。
なんとなく理解したので、覚書的に書いておきます。
##1.returnがない場合
def aisatsu():
print('Hello')
x = aisatsu() #xに対して、あなたは今後aisatsu()ですよと指示している
>> Hello
print(x) #xがaisatsu()になっていれば、Helloが出力されるはず
>> None
このようにxにaisatsuを割り当てて、xを呼び出してもHelloはプリントされません。
なぜなら、このaisatsuの関数が直接呼ばれた時でないと関数の中身が動かないからです。
なので、xに関数を割り当ててもdef aisatsu():までしか呼び出されません。(※イメージです)
##2.returnをつけた場合
def aisatsu():
print('Hello')
return ('Hello') #別の名前で呼ばれた時はこれを返してね
x = aisatsu() #xに対して、あなたは今後aisatsu()ですよと指示している
>> Hello
print(x)
>> Hello
returnをつけると、その関数が別の名前で呼ばれた時は、returnの値を返す。
なので、returnの中を変えると以下のようになる。
def aisatsu():
print('Hello') #正規の名前ならこっち
return ('Bay') #別の名前で呼ばれたらこっち
x = aisatsu() #xに対して、あなたは今後aisatsu()ですよと指示している
>> Hello
print(x)
>> Bay
print(x)では、別の名前で呼ばれたので、returnの中身を返している。
returnの中身は計算結果などを保存できるので、次のようなこともできる。
##3.計算結果を保存
returnの結果は記憶されるので持ち越すことが出来る。
returnを消すと、計算結果すら出力されなくなる。なぜなら、addはx*xを中でやっているだけで、
printすらしていないので、内部で計算して満足して終わりになります。
def add(x):
return (x*x)
z = add(3) #zに3×3が記憶される(つまり9)
print(z)
>> 9
y = add(z) #zに9が記録されているので、9×9になる
print(y)
>> 81
##4.最後に
計算結果をどこかで使おうとするのであれば、returnを使い、その関数の結果として何を返すのかを明確にする必要がある。ということを学びました。
最後にreturnが無いと大変だよという例をあげておきます。
def add(x):
print(x*x)
return('Hello') #関数名以外で呼ばれた時はこれを返す
z = add(3) #関数名で呼ばれているので3×3がプリントされる
>> 9
print(z) #関数名以外で呼ばれているので、戻り値のHelloがプリントされる
>> Hello