どうも、こんにちは。
今Pythonを勉強している仲間でPython部と言うグループを作って勉強しています。
昨日その中で関数の初期値について質問があったのでブログ記事にまとめておきたいと思います。
初めは関数は分かりにくい分野ですが非常に便利ですのでマスターしましょう。
関数とは?
中学生の時の関数を思い出してみよう
中学生の時に数学の授業で一次関数や二次関数を習いました。
あれとよく似ています。
例えば、
f(x) = 2x+1
と言う一次関数を考えてみます。
この場合、
2x + 1という数式にf(x)と言う関数名が付けられています。
で、xに例えば3を当てはめて代入したい時、
f(3) = 2×3 + 1 =7
と言うようにxに3を当てはめて計算します。
xは文字なので色々な数字を代入することができます。
そして、代入する数字によって結果も変わってきます。
Pythonの関数もこれと同じような感じだと思って良いと思います。
Pythonの関数も大体同じ
関数の定義
例えば、このような関数を考えてみます。
def keisan(x): kekka = 2*x +1 return kekka keisan(3)
実行結果 7
まず、このコードのうちのdefから始まってreturn kekkaとなっている部分が関数です。このように書くことを関数を定義すると言います。
要は関数の中身を書くと言うことです。
関数の引数
このdef keisan(x)の部分は一次関数のf(x)みたいなものです。
keisanはこれから定義される関数の名前。名前付けておかないと後からこの関数をここで使いたいって時に呼べないですからね。
xは引数と言います。引数はわかりにくいですが、f(x)のxと同じようなものです。
で、defの下にインデントをつけて具体的な関数の中身、つまりxを代入して実行したいことを書きます。
*インデントとは段落を一つ下げることを言います。スペースは4つが望ましいですが固まりになっていたら良いので何文字でも正常に動くそうです。
ここでは、
2*x+1が具体的な中身となります。
この*(米印)は掛け算の意味です。
で、この計算の結果をkekkaという変数に入れています。
変数もどこかで説明したいですが箱と思ってもらって構いません。2*x+1の結果が入っている箱です。
箱になっていて中身が分からないのはxのとりうる具体的な数字が変わるからですね。
関数のreturn文
そして関数ではreturn文と言ってxを代入して得た結果を返してもらう一文を入れないといけません。
もしもreturn文がなければ画面に表示されるのは真っ白な画面で何も現れません。
なので関数の実行結果を出力する場合はreturnをつけましょう。
ここでは、kekkaの値を返して欲しいのでreturn kekkaと書いています。
このkekkaのことを返り値、戻り値などと言います。
ここまでが具体的な関数の中身です。
関数の呼び出し
次に、keisan(3)の部分を説明します。
ここは関数の呼び出しと言います。
関数に具体的な値を代入して実行させる部分です。
今回は、keisan関数のxという引数に3を代入して関数を実行してその結果を教えてって言うこと(命令)をやっています。
その結果が7になって画面に現れる訳です。
ここまでが関数の基本的な説明です。
関数の初期値について
関数に初期値を定めることができる
def keisan(x=3): #引数に初期値を設定 kekka = 2*x +1 return kekka keisan()
実行結果 7
先ほどはdef keisan(x)と書きましたが、このxの値は初めに決めておくことが出来ます。
基本は関数の呼び出しの時にkeisan(3)と書きましたが、
関数の中に書くこともできるのです。
この初期値を決めた場合は、呼び出しの時にkeisan(3)と書かなくてもkeisan()と括弧の中に何も書かなくても関数を実行してくれます。
しかし、keisan(5)と言うように呼び出し時に具体的に値を入れたらそちらが優先され初期値は無視されます。
def keisan(x=3): kekka = 2*x +1 return kekka keisan(5) #こちらの5が優先的に代入され3は無視される
実行結果 11
初期値を定めずに呼び出し時に値を決めなかった時
def keisan(x): #初期値定めない kekka = 2*x +1 return kekka keisan() #代入する値も定めない時は何もできないのでエラーになる
実行結果 エラー
このようにエラーになってしまうので気をつけましょう。
まとめ
今回はPythonの関数を中学校で習う一次関数になぞらえて説明しました。
今回は引数に数字を使いましたが、もちろん他に文字なども代入できます。
プログラミングの勉強は読んで終わりだけではなく実際に書いてみることをお勧めします。
PythonにはGoogle Colaboratoryと言う簡単に使える環境があるのでそちらでぜひ上のコードを書いて実行してみてください。
コメント