はじめに
もうすでにprintやabsなどの関数を見て使用したと思いますが、Pythonにはさらに多くの関数があります。Pythonプログラミングの大部分は、独自の関数を定義することだと思います。
このレッスンでは、関数の使用と定義について詳しく学習します。
困ったときは
前のチュートリアルでabs関数を確認しましたが、その機能を忘れた場合はどうでしょうか。help関数は、おそらくあなたが学ぶことができる最も重要なPython関数です。 help関数の使い方を覚えている場合は、他のほとんどの機能を理解するための鍵を握っています。
例えばround関数の場合は?

help関数は2つのことを表示します。
- その関数のヘッダーでその関数の使い方を説明している。この場合、round関数が数値を引数でとることを示しています。オプションでndigitsを引数に追加することができる。
- 関数機能の簡単な説明。
例えばprint関数の場合は?

printがsepと呼ばれる引数を取ることができること、出力するすべての引数の間にsepが出力されることを知るかもしれません。
関数定義

- a、b、cの3つの引数を取るleast_differenceという関数が作成されます。
- 関数は、defキーワードによって導入されたヘッダーで始まり、 :に続くインデントされたコードブロックが関数が呼び出されたときに実行される
- Pythonはreturnステートメントを検出すると、関数をすぐに終了し、右側の値を呼び出しコンテキストに渡します。
独自で組んだコードに対してhelp関数を使用できるが、コードを読んで説明文を自動的つくることは難しい。そのため、docstringと呼ばれるものでhelp関数で表示する説明やサンプルを記述する。


返らない関数
関数にreturnキーワードを含めなかった場合はどうなりますか?

Pythonでは、このような関数を定義できます。 それらを呼び出した結果は特別な値Noneです。 (これは他の言語の「null」の概念に似ています。)
returnステートメントがなければ、least_differenceは完全に無意味ですが、副作用のある関数は何も返さずに役立つことがあります。 この2つの例はすでに見てきました。print()とhelp()は何も返しません。 私たちはそれらの副作用のためにそれらを呼び出すだけです(画面にテキストを置く)。 有用な副作用の他の例には、ファイルへの書き込み、または入力の変更が含まれます。

デフォルトの引数
help(print)を呼び出したとき、print関数にはいくつかのオプションの引数があることがわかりました。 たとえば、sepの値を指定して、出力された引数の間に特別な文字列を挿入できます。

ただし、値を指定しない場合、sepはデフォルト値 ”(単一のスペース)を持つものとして扱われます。

定義する関数にデフォルト値を含むオプションの引数を追加するのは非常に簡単です。

関数に適用される関数
最初は非常に抽象的な感じがするかもしれませんが、関数を他の関数の引数として指定できます。これは強力なものです。

他の関数を操作する関数を「高次関数」と呼びます。Pythonに組み込まれている高次関数を呼び出すと便利な場合があります。
例えば、max関数の引数:keyがあります。引数:keyに関数:f(x)を渡すと、f(x)を最大化する引数が返されます。
