葵は関数の返り値が複数個あっても良いって話は覚えてるかな?
返り値って「return」のあとにくっ付いてる値で、関数の外に値を送れるやつだったよね!リンゴジュースとバナナジュース!!
確かおねーちゃんがすごくシレッと言ってたね
そうそう、あまりにもシレッと紹介しただけだったから、ここで改めてプログラムと一緒に紹介するね
返り値を複数個にする場合は、返ってきた先でも同じ個数だけ値を受け止める状態を作っておかないとエラーが出ちゃう点に注意してね
返り値が2個なら、返り値を受け取る変数も2個用意する必要があるってことだね!
一応、受け取る変数が1つの場合は「タプル型(配列型に似た型)」として受け取ることができるけど、返り値の個数だけ受け取る変数も用意しとくほうが間違いは少ないかな
あと、「return」は関数に1つしか使えないと思ってしまいがちだけど、条件によって違う結果を返すために複数扱うことも可能だよ!
そうなんだ!if文を使う時はわざわざ一度変数に入れてから返してたよ...!
...ところで、わざわざ「return」をしなくても、関数の外の変数を直接更新したら良いんじゃないの??
良いところに気づいたね!だけど、基本的にそれは出来ないようになってるんだ
そうなの!?
実は変数って、関数の外で定義する「グローバル変数」と関数の中で定義する「ローカル変数」があって、明確に区別が付けられてるんだよね
それってどう違いがあるの?
グローバル変数はプログラムのどこでも参照できるけど、関数内で更新はできなくて、ローカル変数は関数内でしか使えないけど、関数内なら更新もできるんだ
なるほど、だからちゃんと返り値で関数の外に送ってあげる必要があるんだね!
そういうことだね!
厳密には関数内でグローバル変数を更新する方法はあるんだけど、多用すると不具合が出やすくなるからやり方は控えておくね
りょーかい!まずはちゃんと「return」に慣れるようにするよ!!
じゃあ次は「引数のデフォルト値(初期値)の設定」について紹介するね
初期値の設定ができるってどういうこと?
前回と同じくミキサーで説明すると、例えば普段ジュースを作る時は「牛乳」を入れるけど、たまに「豆乳」に変えたいって時があるよね
そこまでは意識高くないです
まぁまぁ、例だから...汗
だけど、その「たまに」の為に毎回「牛乳」を指定しないといけないのは面倒くさいよね
たしかに!!
そんな時に使えるのが「引数のデフォルト値(初期値)の設定」なんだ
やり方もシンプルで、関数の定義の時に「引数名=デフォルト値」とすれば良いよ!
おおー!!これは簡単だし、覚えとくと便利そうだね!!
だけど注意してほしいこともあって、「デフォルト値を設定する引数は、設定しない引数より必ず後ろに用意すること」だね
ほうほう
それと、デフォルト値のある関数を扱う時に「値を指定しない(デフォルト値を使う)引数」があったり無かったり混在している場合は引数名もちゃんと指定しないとエラーになる点に注意してね
逆に言えば、関数に指定した引数の順番に引数の値を入れる場合は、引数名を指定しなくても良いんだね
そういうこと
上手く使える自信はないけど、思い出した時は試してみる!
引数には他にも、引数の個数を指定しない「可変長引数」っていうのもあるんだけど、ちょっと扱いが難しいから存在だけ知っておけば十分かな
あ!もしかして、「print()」の時に「,」を付けるだけで何個でも横並びで文字が表示できるのもこの仕組み!?
おお!よく気づいたね!!えらい!!!
(どやぁ...)
