Pythonの関数について学んでいきましょう。
Pythonでも関数を作ることができます。
関数を使うことに慣れましょう。
情報活用編プラス
第3章「コンピュータとプログラミング」
IP02-07
関数を使ってみよう
Pythonの関数について学んでいきましょう。
スライドの学習内容
Pythonで使用する関数には、以下の種類があります。
・組み込み関数
・ライブラリ関数
・自作関数
どの種類の関数においても、Pythonで関数を呼び出すときは、「関数名(引数)」と記述することを覚えておいて下さい。
引数が複数ある場合は、関数名(引数,引数,…)のように、「,」(カンマ)で区切って引数を指定します。
また、引数がない場合でも、「()」は記述しなくてはいけません。
Pythonでも関数を作ることができます。
関数を使うことに慣れましょう。
このスライド学習では、Google CorabでPythonのプログラムを打つことがあります。
Google Colabへは、次のリンクをクリックして移動しましょう。
また、Google Colabでは新しいノートブックを作成し、名前をIP02-07としましょう。
今まで使っていた、print()やrange()なども、実は組み関数の一種なんです!!
組み込み関数とは、Python側であらかじめ作られている関数です。
すでに完成している関数なので、改めて準備をする必要はありません。
リスト内のデータの合計を求めるsum()関数や、最大値を求めるmax()関数などがあります。
以下のプログラムを実行して、組み込み関数の動作を確認しましょう。
data = [14,52,31,49,22]
total_data = sum(data)
max_data = max(data)
print("合計:" , total_data)
print("最大値:" , max_data)
このプログラムを実行してみましょう。
以下のような結果になれば成功です。
ここで使っている関数は、sum()とmax()と…
print()ですね。
その通りですね。sum()関数は、引数で渡したリストの合計値を戻り値として返す関数です。
max()関数は、引数で渡したリストの最大値を戻り値として返す関数です。
戻り値で帰ってきた値は、変数に「=」を使って代入しています。
ライブラリとは、特定の機能を集めた関数群です。
以下のプログラムを実行して、mathライブラリの実行を確認しましょう。
math(マス)ライブラリには、引数で渡した値の四捨五入を求めるための関数が用意されています。
import random # import文
print(random.randint(1,6)) # 1~6の間の値をランダムで取得し、表示する
このプログラムを何回も実行してみてください。
どうなりましたか?
実行するたびに、違う値が出てきています。
ランダムなのかな?
1〜6の値がランダムで出るみたいだね。
すごろくゲームとかで使えそうだ。
①ライブラリの中に入っている関数を使用するためには「import(インポート)文」を使って、ライブラリを使用することを明示する必要があります。
②ライブラリ関数を使用するときは、「ライブラリ名.関数名()」と呼び出します。
random.randint(1,6) # 1~6のランダム値を求める
Pythonでは、あらかじめ用意されているライブラリの「標準ライブラリ(内部ライブラリ)」と、「外部ライブラリ」があります。
「標準ライブラリ」は、Pythonであらかじめ用意されていますが、「外部ライブラリ」は、別途インストールする必要があります。
標準ライブラリの例
| ライブラリ名 | 主な用途 | 代表的な関数 |
|---|---|---|
| math | 数学の高度な計算を行う。 | sqrt()(平方根)、sin()(三角関数)、pi(円周率) |
| random | ランダムな値を生成する。 | randint()(整数乱数)、choice()(ランダム選択) |
| datetime | 日付・時刻操作を行う。 | datetime.now()(現在時刻)、timedelta(時間差) |
外部ライブラリの例
| ライブラリ名 | 主な用途 | 代表的な機能 |
|---|---|---|
| numpy | 科学技術計算や、AIの基本となるライブラリ。 | ndarray(多次元配列)、高速な計算処理 |
| matplotlib | データからグラフを作成する。 | 折れ線・棒・散布図などの作成 |
| pygame | ゲームの開発を行う。 | 2Dゲーム制作、音や画像の表示 (Google Colaboratoryでは使用できません。) |
Pythonはライブラリの種類が豊富です。
人気の理由の一つですね。
Google Colab(Google Colaboratory)は、クラウド上でPythonを実行できる環境です。特別なインストールをしなくても、ブラウザさえあればすぐに使えるのが特徴です。
Colabには、最初から多くの 外部ライブラリ がインストールされています。
たとえば、データ分析に使う pandas や numpy、グラフ描画の matplotlib、機械学習の scikit-learn や tensorflow などです。
もし標準で入っていないライブラリを使いたい場合は、次のように pip install をノートブック内で実行することで追加できます。
外部ライブラリのインストールコマンド
!pip install 外部ライブラリ名
Colabは「教材セットが最初から用意された実験室」みたいなものです。
必要な道具(ライブラリ)はすでに揃っているし、足りないものも pip で取り寄せればすぐに使えるんです!
自作関数は、defキーワードを用いて、自分で処理を定義する関数です。自作関数を活用することで、コードの再利用性や可読性、保守性を向上させることができます。
まず、関数を構成する要素を確認しましょう。
関数には、名前をつける必要があります。
呼び出す時には、その名前を記載します。
「引数」や「パラメータ」とは、関数を呼び出すときに同時に渡すデータのことです。
例えば、円の面積を求める関数であれば、面積を求めるために「半径」のデータが必要になります。
関数が作業を行うために必要なデータを、呼び出し元のプログラムから渡してあげます。
このデータを、「引数」、または「パラメータ」と言います。
引数は、関数の処理内容によっては必要が無い場合もあります。
関数が処理を終えた後、その結果を呼び出し元へ返却するデータを、「戻り値」と言います。「返り値」や「返却値」ということもあります。
例えば、画面にデータを表示して終わる関数など、呼び出し元への返却が必要ない処理の場合、戻り値が必要の無い場合もあります。
Pythonで関数を作成するには、以下のように記述します。
関数の定義方法
def 関数名(引数1, 引数2, ...):
処理内容
return 戻り値
defとは、「define(定義する)」の略で、関数の定義で使用するキーワードです。
defの後ろに関数名を書きます。関数名は、変数名と同じルールで命名します。
関数名の後ろに()を書き、その中に引数を受け取る変数名を書きます。
複数ある場合は、「,」(カンマ)で区切って複数書きます。
データ型はなんでも構いません。リストを渡すこともできます。
引数が無い場合でも、「()」は記載する必要があります。
関数名や引数の定義の最後に「:」をつけ、次の行から関数の処理内容を記述します。
関数の処理の範囲は、インデントで決まります。
「return」の後ろに、戻り値を記載します。
1つの関数に、複数の「return」を記述して構いません。
「return」を実行したら関数はそこで終了します。以降に処理が続いていても、呼び出し元に戻ります。
作成した関数を呼び出すには、以下のように記述します。
関数の呼び出し方法
関数名(引数1, 引数2, ...)
関数名の後ろに、()で引数を指定します。
基本的に、引数の数は定義と一致している必要があります。
※正確には、引数の数を自由に設定できる可変長引数というものがあります。
戻り値を変数で受け取る場合は、「変数名 = 関数名(引数)」と、そのまま代入することができます。
戻り値をそのまま表示する場合は、print(関数名(引数))のように、直接print()関数に入れても構いません。
以下のプログラムを実行して、関数を作成しましょう。
ここでは、三角形の面積を求めます。
三角形の面積を求める公式
三角形の面積 = 底辺の長さ × 高さ ÷ 2
def triangle(base,height):
area = (base * height) / 2
return area
# ここより上が関数の定義
# ↓↓プログラム開始
m = triangle(10 , 5) # 3角形の面積を求める
print(m)
最初の3行は、関数の定義です。
関数は、呼び出されるまで実行はしないので、このプログラムは6行目(m=triangle(10 , 5))から開始します。
Pythonは上から順にコードを実行するため、関数を呼び出す前に定義しておかないとエラーになります。
関数で一つのセルを使っても構いません。
一度実行すると、今後の全てのセルで呼び出しが可能になります。
| 関数の種類 | 定義 | 例 |
|---|---|---|
| 組み込み関数 | Pythonに最初から組み込まれており、インポートせずに直接使用できる関数。 | print(), range(),sum(),max() |
| ライブラリ関数 | 使用前に対応するライブラリをインポートし、関数名を指定して関数を呼び出す。 | math.sqrt(), random.randint() |
| 自作関数 | 開発者が特定の処理をまとめて独自に定義した関数。 専用のキーワードを用いて関数を定義し、定義した関数名を呼び出して使用。 |