▶ Pythonでデータ分析に取り組みたい方は以下の記事も参考にどうぞ
はじめに
今回は「関数」について扱います。関数はコードを再利用してあとで簡単に呼び出すことができる仕組みです。「自作の関数」を定義できるようになると、同じコードを何度も書く必要がなくなり、非常に効率的になります。基本から順に解説をしていきます。
関数
今後、関数をたくさん作ってコーディングしていくことになるので、自作の関数を作ることができることは非常に大切です。基本的な部分から確認していきましょう。
書式
まずは自作の関数の定義の仕方から確認していきましょう。次の書式で関数を定義することができます。
これが基本形になります。引数は複数摂ることもできます。「関数の定義」の部分では、グローバル変数を使うこともできるし、引数として渡された変数を使うこともできます。但し、変数には「スコープ」という概念があり、基本的にはグローバル変数は関数の中では書き換えることができません。どうしても書き換えたいときには、決まった書式で書き換える必要があります。
また基本形として「return 返り値」としていますが、返り値のない関数を定義することもできます。これは実際に例をみながら確認していくことにしましょう。
関数を定義してみる
では実際に関数を定義してみましょう。関数を定義する場合、以下のルールを意識するとよいでしょう。
- コードをみやすくするため、関数の周りは2行あける。
- 基本的に1つの関数は1つの機能のみを持たせるようにする
- 目安として関数は20行くらいまでに収める
- 関数の命名ルールは変数名と同じくスネークケースとする
20行に収める、や1つの機能のみ持たせる、というのはあくまで目安ですが、この辺を意識しておくとコードがわかりやすくなるためおススメです。では、早速見ていきましょう。まずは簡単な例を見ていきましょう。ある数字に100を加える「add_100」という関数を定義してみましょう。
# 関数の定義
def add_100(num1):
result=num1+100
return result
この関数を実際に使うには、add_100()でコールします。その際に引数「num1」を指定する必要があります。ここでは「5」を指定してみましょう。
# 定義した関数を利用してみる
add_100(5)
指定した「5」に対して、100を加えた「105」が返ってきてますね。
return を記述しない場合
次に、記載した「書式」とは異なるのですが、「return」を記述しない関数も定義することができます。この場合は、返り値は「None」となります。「return None」と同じですが、この記述はそう略することができます。一つ試しにやってみましょう。
# returnを記述しない関数
def say_hello():
print('どうぶつえんへようこそ!')
say_hello()
say_hello()関数を定義しました。この関数を呼び出すと「どうぶつへんへようこそ!」が表示されます。返り値が「None」であることも確認してみましょう。
# 返り値を確認
return_value=say_hello()
print(return_value)
print()により「どうぶつえんにようこそ!」が表示されますが、返り値である「return_value」は「None」になっていますね。
複数の返り値がある場合
複数の返り値がある場合も考えてみましょう。
# 複数の返り値がある場合
def return_two_values(list):
if len(list)<2:
print('要素が2つ以上あるリストを指定してください')
else:
return list[0],list[1]
# どうぶつたちのリストを定義
animals=['らくだ','ねこ','しまうま','らいおん','うさぎ']
# 定義した関数を呼び出す
return_two_values(animals)
リストを指定すると、リストの先頭と2つ目の要素を返す関数を定義しています。ここでは念のため要素数が2つ未満のリストが指定されたときには、リストを指定しなおすような注意喚起を表示するようにしています。
どうぶつのリスト「animals」を定義して、この関数に「animals」を指定して呼び出してみると、その返り値はタプルになっていますね。このように複数の返り値がある関数を呼び出すと、タプルで返ってきます。タプルとして受け取ってもよいし、あるいは、返り値の数だけ変数を指定して受け取ることもできます。このような操作をアンパックといいます。やってみましょう。
# タプルをアンパックして受け取る
first_animal,second_animal=return_two_values(animals)
print(f'最初のどうぶつは{first_animal}です')
print(f'2番目のどうぶつは{second_animal}です')
このように(’らくだ’, ‘ねこ’)というタプルがアンパックされて、「first_animal」「second_animal」という変数に格納することができました。
まとめ
今回は自作の関数の作り方を扱いました。まず書式を確認して、実際に簡単な自作関数の作成をおこないました。次に「return」を記述しないケースを紹介し、最後に返り値が複数ある場合を扱いました。いずれも難しくなかったですね。今回は関数に渡す値である「引数」については触れませんでしたので、次回の投稿で扱うことにします。
コメント