

Pythonを学びたいと思っている方に非常におすすめな学習方法があります。それは、KaggleのCoursesです。特徴としては、以下のものがあります。
- 無料
- 面倒な環境設定なく
- 解説付きで
- 体系的に学習できる
これは、活用しないわけにはいかないですよね。ただ、このKaggleのCoursesは、英語で書かれています。なので、英語が苦手な初学者にはハードルが高いと感じるかもしれません。なので、日本語でコードの解説をしていきます。
まずは、以下の記事を参考に、KaggleのCoursesで独学する方法を解説しています。
Kaggle Courses|Pythonを無料で独学できる超簡単な方法
今回は、KaggleのCoursesの各論として、Python偏の「Functions and Getting Help」の「tutorial」を解説していきます。
Functions and Getting Help (tutorial)
チュートリアルでは、コードの解説だけなので、コードの実行はできません。まずは、解説を参考に、コードの理解を深めていきましょう。
printやabsなどの関数はすでに見たり使ったりしたことがあると思います。しかし、Pythonにはもっと多くの関数があり、自分で関数を作ることも多いはずです。
今回のレッスンでは、関数の使用と定義について詳しく学びます。
Getting Help(helpを使ってみる)
前回のチュートリアルで abs 関数を見ましたが、それが何をする関数なのか忘れてしまった場合はどうしたらいいでしょうか?
help()関数は、おそらくPythonの関数の中で最も重要なものです。help()の使い方を覚えておけば、他のほとんどの関数を理解する鍵となります。
help() のカッコ内に関数を入力して、実行すれば上のように出力されます。
help()は2つのことを表示します。
関数round(number, ndigits=None)のヘッダです。この場合、round()がnumberと表現できる引数を取ることを示しています。さらに、オプションで ndigits と表現される別の引数を与えることができます。
その関数が何をするのかを英語で簡潔に説明したもの。
よくある落とし穴:関数を調べるときには、その関数を呼び出した結果ではなく、その関数自体の名前を渡すことを忘れないでください。
関数round()の呼び出しでヘルプを呼び出すとどうなるでしょうか?
下のセルの出力を表示にして見てみましょう。
Pythonはこのような式を内側から評価します。まず round(-2.01) の値を計算し、次にその式の出力に対するヘルプを提供します。
(そして、整数について多くのことを語ることができます。後ほどPythonのオブジェクト、メソッド、属性について説明しますが、上記のヘルプ出力はより意味のあるものになるでしょう)
printのような複雑で設定可能な関数を扱うときには、helpはさらに威力を発揮します。以下の出力が分かりにくくても気にしないでください…今は、このヘルプから何か新しいことを見つけられるかどうか見てみてください。
もし、それを探していたら、printがsepという引数を取ることができ、これはprintするときに他のすべての引数の間に置くものを記述するものだということが分かるかもしれません。
Defining functions(関数の定義)
組み込み関数は素晴らしいものですが、それだけでは限界があるので、自分で関数を定義する必要があります。以下に簡単な例を示します。
これにより a、b、c の3つの引数を取る lest_difference という関数が作成されます。
関数はdefキーワードで導入されるヘッダーで始まります。インデントされた : の後のコードブロックは、関数が呼び出されたときに実行されます。
return は、関数に固有のキーワードです。Pythonはreturn文に出会うと、即座に関数を終了し、右側の値を呼び出し元のコンテキストに渡します。
ソースコードを見て、 least_difference() が何をしているのか分かりましたか?もしわからなければ、いつでもいくつかの例で試してみましょう。
それでは help()関数を実行してみましょう。何か教えてくれるかもしれません。
Pythonは私のコードを読んで、それを簡潔な英語の説明に変えてくれるほど賢くはありません。しかし、関数を書くときには、docstringと呼ばれるもので説明を提供することができます。
Docstrings
docstringは、関数のヘッダの直後にある3重引用符(””” “””)で囲まれた文字列(複数行に渡る場合もある)です。関数の help() を呼び出すと、docstring が表示されます。
余談ですが。このdocstringの最後の2行は、関数の呼び出しと結果の例です。(>>>はPythonの対話型シェルで使われるコマンドプロンプトへの参照です)。Pythonは例の呼び出しを実行しません。読者の便宜のために存在しているだけです。関数のdocstringに1つ以上のexamples callを含めるという慣習は、一般的に守られているわけではありませんが、誰かがあなたの関数を理解するのに非常に効果的です。実際の例としては、np.eyeというnumpy関数のdocstringをご覧ください。
優れたプログラマーは、コードを使った後すぐに捨ててしまうことを想定していない限り、docstringを使用します(これはまれです)。ですから、あなたもdocstringを書き始めてみてはいかがでしょうか。
一般的にスステムを作る場合やプログラムを作る場合は、チームで作成します。なので、チームで関数の意味を共有する必要があるため、説明文を作成しなければなりません。
Functions that don’t return
もし、関数の中に return キーワードを入れなかったらどうなるでしょうか?
Pythonではこのような関数を定義することができます。これらの関数を呼び出した結果は、特別な値Noneとなります。(これは他の言語での “null “の概念に似ている)。
返り値がなければ least_difference は全く無意味ですが、副作用のある関数は何も返さずに有用なことをするかもしれません。print()とhelp()は何も返しません。print()とhelp()は何も返しません。私たちがこれらの関数を呼ぶのは、その副作用(画面にテキストを表示すること)のためだけです。その他の有用な副作用の例としては、ファイルへの書き込みや入力の変更などがあります。
なので、以下のように、関数作成後は戻り値(なにを出力させるか)を書かなければなりません。
Default arguments(デフォルトの引数)
help(print)を呼び出したとき、print関数にはいくつかのオプションの引数があることがわかりました。例えば、sepに値を指定して、印刷される引数の間に特別な文字列を入れることができます。
しかし、値を指定しない場合、sepはデフォルト値の「’」(半角スペース)を持つものとして扱われます。
私たちが定義した関数に、デフォルト値を持つオプションの引数を追加するのは、とても簡単なことです。
Functions Applied to Functions(関数を応用する)
最初は非常に抽象的に感じるかもしれませんが、強力な機能があります。関数を他の関数の引数として与えることができます。いくつかの例を挙げるとわかりやすいでしょう。
他の関数を操作する関数を “高階関数 “と呼びます。しばらくの間、自分で書くことはないでしょう。しかし、Pythonには呼び出すと便利な高階関数が組み込まれています。
ここでは、max関数を使った面白い例を紹介します。
デフォルトでは、maxは引数のうち最大のものを返します。しかし、オプションのkey引数を使って関数を渡すと、key(x)を最大化する引数x(別名「argmax」)を返します。
Your Turn(あなたの番です)
関数はPythonのプログラミングに全く新しい世界をもたらします。実際に使ってみましょう。
コメント