初めに
今回はプログラミングの中でも便利な機能(文法)の関数について解説していきたいと思います。関数は一言でいうと、「持ち運びできる処理のかたまり」です。イメージとしては「中身が変化する持ち運びできるバッグ」です。これを使いこなせると長くなったコードを短くできたり、処理が速くなったりします。ぜひ、理解して使いこなしましょう。
私の場合
私がプログラミングを勉強し始めたとき関数の使い方が分かりませんでした。いつ使うんだ?とかreturnってなんだ?とか。数学での関数は分かっていたのですが、いざプログラミングになるとなんのこっちゃでした。では、なぜ関数を使い始めたかというと①「プログラムを作っていく中でコピペして同じ処理を行っていることに気づいたこと」と②「使ってみたい!かっこいい!」と思ったからです。①に関しては可読性や処理の修正などがめんどくさくなったということもあります。②はネットとか本とか見てて使えたらかっこいいなという面があります(笑)。これら動機で勉強しました。その時に感じたつまずきなどを解説したいと思います。
コード
def animate(i):
Z = G(X, Y, T_list[i])
im = ax.contourf(X_, Y_, Z)
text.set_text("T = {}".format(T_list[i]) + " K")
return im.collections + [text]
ani = animation.FuncAnimation(fig, animate, frames=len(T_list), interval=200, blit=True)
今回のコードはこちらの記事の最後のコードです。こちらは関数の強みを使っているコードなので解説します。
解説
まず、関数のイメージを持ってもらうと思います。もしかしたら分かりにくいかもしれませんが、頑張ってイメージ図を作りました…。
関数をどこでも持ち運びできるバッグだとイメージしてください。その中には財布やスマホ、常備薬など人によって違いますが入っています。そのバッグをレストランやコンビニ、水族など色々な所に持っていくことができます。バッグは取り出す中身が同じであれば場所が違っても使えるものだと思います。これのイメージが関数に近いと思います。コードにした時の関数を赤字で示しています。分かりやすいような分かりにくいようなイメージですね…。言いたいことはインプットデータを入力し同じ結果を出力するのであればコードのいたるところで使うことができます。ということです。
上のイメージでの分かってもらえたように関数で重要なのはインプットとアウトプットを宣言することです。よく本やサイトで見る図ですが、以下のような関数の図が使われます。
インプットを処理し、アウトプットとして出力します。
このときのルールはインプットはdef name(a,b,c,…):で書き、:より下に処理を書き、アウトプットをreturnで書くということです。これを念頭に置いて、上のコードを見てみましょう。
def animate(i):
Z = G(X, Y, T_list[i])
im = ax.contourf(X_, Y_, Z)
text.set_text("T = {}".format(T_list[i]) + " K")
return im.collections + [text]
今回の関数の名前をanimateとし、インプットはiとしています。:より下で処理を書きます。最後の行でreturnでアウトプットを書いています。このかたまりをコードのいたるところで使うことできますが、今回は同じ処理でアニメーションを作成するので、関数にしています。ループとの相性も良いので処理を関数化して行うとコードの可読性がよくなると思います。
最後に
今回は関数について解説しました。私は数学的なイメージがあったため理解するのは早い方だったかもしれません。プログラミング初心者の方に分かりやすくするためにいろいろ捻ってみたのですが少し分かりづらいイメージになってしまったかもしれません。それでも関数の重要性や使い方など分かっていただけたら幸いです。もっと分かりやすいイメージが思い付きましたら更新します。
コメント