[Pythonのはじめ方] Part9: 関数の定義と呼び出し

Pythonプログラミングの基本、関数をマスターしよう!

Pythonプログラミングを進めていくと、同じような処理を何度も書く場面が出てきます。そんな時に役立つのが「関数」です。関数を使うことで、コードをすっきりとまとめ、再利用しやすく、読みやすくすることができます。このステップでは、関数の基本的な定義方法と呼び出し方を学びましょう!

関数ってなんだろう?

関数とは、特定の処理をひとまとめにしたものです。例えば、「画面にメッセージを表示する」「2つの数字を足し算する」といった一連の動作を、一つの名前をつけて定義できます。

関数を使うメリット:

  • 再利用性: 同じ処理を何度も書く必要がなくなり、関数名を呼び出すだけで済みます。
  • 可読性: 処理の塊に名前が付くことで、コード全体の流れが分かりやすくなります。
  • 保守性: 処理の修正が必要になった場合、関数定義の部分だけを修正すれば済みます。

関数の定義方法 (def)

Pythonで関数を定義するには、def というキーワードを使います。基本的な構文は以下の通りです。

def 関数名(引数1, 引数2, ...): # ここに関数が行う処理を記述します (インデント必須!) # ... # 必要であれば return 文で値を返す return 戻り値 

構成要素を見ていきましょう:

  • def: 関数定義の開始を示すキーワードです。
  • 関数名: 関数を呼び出すときに使う名前です。分かりやすい名前を付けましょう (通常は小文字とアンダースコアを使います)。
  • (引数1, 引数2, ...): 関数が処理を行うために受け取る値 (データ) です。引数がない場合は () のみを記述します。引数のことを「パラメータ」と呼ぶこともあります。
  • : (コロン): 関数定義のヘッダー部分の終わりを示します。
  • インデントされたブロック: ここに関数が実行する処理を書きます。インデント (通常はスペース4つ) が非常に重要です。
  • return 戻り値: 関数の処理結果を呼び出し元に返す場合に記述します。return 文がない場合、関数は自動的に None という特別な値を返します。
関数名は、変数名と同じく、分かりやすく具体的な名前を選ぶのがポイントです。例えば、挨拶をする関数なら greetsay_hello などが良いでしょう。

簡単な例: 挨拶する関数

まずは、”Hello, Python!” と表示する簡単な関数を定義してみましょう。

# "say_hello" という名前の関数を定義する
def say_hello(): print("Hello, Python! ") 

この例では、say_hello という名前の関数を定義しています。この関数は引数を取らず (() の中が空)、print() を使ってメッセージを表示する処理を行います。return 文がないので、この関数は None を返します。

関数の呼び出し方

定義した関数は、呼び出すことで初めて処理が実行されます。関数を呼び出すには、関数名の後に括弧 () をつけます。

関数名(引数1の値, 引数2の値, ...) 

引数がある関数を呼び出す場合は、括弧の中に具体的な値 (引数) を指定します。

例: `say_hello` 関数を呼び出す

先ほど定義した say_hello 関数を呼び出してみましょう。

# say_hello 関数の定義 (再掲)
def say_hello(): print("Hello, Python! ")
# say_hello 関数を呼び出す
say_hello() 

これを実行すると、コンソールに “Hello, Python! ” と表示されます。

関数は定義しただけでは実行されません。必ず呼び出す必要があります!

引数を使ってみよう

関数は、外部からデータを受け取って処理を行うことができます。この受け取るデータのことを「引数 (ひきすう)」と呼びます。

引数ありの関数の定義

名前を受け取って、その人に合わせた挨拶をする関数を考えてみましょう。

# "name" という引数を受け取る関数 "greet" を定義する
def greet(name): print(f"こんにちは、{name}さん!") 

この greet 関数は、name という引数を一つ受け取ります。関数の中では、受け取った name の値を使って挨拶メッセージを作成し、表示しています。f"" (f文字列) を使うと、文字列の中に変数の値を簡単に埋め込めます。

引数ありの関数の呼び出し

greet 関数を呼び出すときは、括弧の中に挨拶したい相手の名前 (文字列) を渡します。

# greet 関数の定義 (再掲)
def greet(name): print(f"こんにちは、{name}さん!")
# "greet" 関数を呼び出す (引数に "田中" を渡す)
greet("田中")
# 別の名前で呼び出す
greet("鈴木") 

これを実行すると、以下のように表示されます。

こんにちは、田中さん!
こんにちは、鈴木さん! 

このように、引数を使うことで、関数はより柔軟で汎用的な処理を行えるようになります。

戻り値 (return) で結果を返す

関数は、処理の結果を呼び出し元に返すことができます。このために使うのが return 文です。

def 関数名(引数...): # 何らかの処理... 計算結果 = ... return 計算結果 # 処理結果を返す 

return 文が実行されると、関数の処理はその時点で終了し、指定された値が関数の呼び出し元に返されます。返された値は、変数に代入したり、他の処理で使ったりすることができます。

例: 2つの数値を足し算する関数

# 2つの数値を受け取り、その合計を返す関数 "add" を定義する
def add(a, b): result = a + b return result # 計算結果を返す
# add 関数を呼び出し、戻り値を変数 "sum_result" に代入する
sum_result = add(5, 3)
print(f"5 + 3 の結果は: {sum_result}") # 結果を表示
# 戻り値を直接 print 関数で使うこともできる
print(f"10 + 7 の結果は: {add(10, 7)}") 

実行結果:

5 + 3 の結果は: 8
10 + 7 の結果は: 17 
return 文がない場合:
関数内で return 文が実行されない場合、または return 文自体がない場合、関数は自動的に None という特別な値を返します。None は「何もない」ことを表す値です。
def no_return_func(): print("この関数は何も返しません")
result = no_return_func()
print(f"戻り値: {result}") # "戻り値: None" と表示される 

Docstring (ドキュメンテーション文字列)

関数がどのような処理を行うのか、引数や戻り値は何なのかを説明するために、Docstring (ドックストリング) を書くことが推奨されています。Docstring は、関数定義の直下にトリプルクォート (""" または ''') で囲んで記述します。

def add(a, b): """2つの数値を受け取り、その合計を返す関数。 Args: a (int or float): 1つ目の数値。 b (int or float): 2つ目の数値。 Returns: int or float: a と b の合計値。 """ result = a + b return result 

Docstring を書いておくと、後で自分や他の人がコードを読む際に、関数の使い方をすぐに理解できるようになります。Python の組み込み関数 help() や、多くの開発ツールが Docstring を利用して関数の説明を表示してくれます。

# add 関数の Docstring を表示する
help(add) 

良い Docstring を書く習慣をつけましょう!

まとめ

今回は、Python における関数の基本的な定義方法と呼び出し方、引数、戻り値、そして Docstring について学びました。

  • 関数は def キーワードで定義する。
  • 関数を呼び出すには 関数名() のように書く。
  • 引数を使うと、関数にデータを渡せる。
  • return 文を使うと、関数から結果を受け取れる。
  • Docstring で関数の説明を書くのが良い習慣。

関数はプログラミングにおいて非常に重要な概念です。繰り返し練習して、自由自在に関数を使いこなせるようになりましょう! 次のステップでは、引数の様々な指定方法や戻り値について、さらに詳しく学んでいきます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です