生成AIと学ぶPython11: Pythonの関数(関数基本)

関数の基本

関数とは、特定のタスクを実行するための一連のプログラム命令をまとめたものです。これにより、同じコードを何度も書くことなく、一度定義した関数を何度でも呼び出すことが可能になります。これはコードの重複を避け、プログラムの可読性と保守性を高めます。

Pythonでは、defキーワードを使用して関数を定義します。次に基本的な関数の構造を示します。

def function_name(parameters):
    """docstring"""
    # function body
    return result
  • 関数名(function_name): 関数名はその関数を一意に識別します。Pythonの関数名は、通常は小文字で始まり、アンダースコアで単語を区切るスネークケースが推奨されます(例:my_function)。

  • パラメータ(parameters): パラメータは関数が受け取る入力を定義します。複数のパラメータがある場合、それらはカンマで区切ります。パラメータは必須でもオプションでもあり得ます。

  • ドックストリング(docstring): これはオプションで、関数の目的と動作を説明するための文字列です。一般的には三重引用符(""")で囲まれた複数行の文字列を使用します。

  • 関数本体(function body): これは関数が実行する具体的な操作を定義したコードブロックです。

  • 戻り値(return): return文は関数の出力を定義します。この文が実行されると、関数はすぐに終了し、指定された値が呼び出し元に返されます。

関数は、入力を受け取り(パラメータ)、それに基づいて何らかの処理を行い(関数本体)、結果を出力する(戻り値)という形で動作します。

関数の使用例

例1: 平均を計算する関数

以下の関数calculate_averageは、数値のリストを受け取り、その平均を計算して返します。

def calculate_average(numbers):
    """Return the average of a list of numbers."""
    return sum(numbers) / len(numbers)

# 使用例
nums = [2, 4, 6, 8, 10]
print(calculate_average(nums))  # 出力: 6.0

例2: 文字列を逆にする関数

以下の関数reverse_stringは、文字列を受け取り、その逆の文字列を返します。

def reverse_string(s):
    """Return the reverse of the string."""
    return s[::-1]

# 使用例
s = "Hello, World!"
print(reverse_string(s))  # 出力: "!dlroW ,olleH"

例3: フィボナッチ数列を生成する関数

以下の関数fibonacciは、指定された数のフィボナッチ数を生成します。

def fibonacci(n):
    """Return the first n Fibonacci numbers."""
    fibs = [0, 1]
    while len(fibs) < n:
        fibs.append(fibs[-1] + fibs[-2])
    return fibs

# 使用例
print(fibonacci(10))  # 出力: [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]

これらの例では、関数を使用してコードを整理し、再利用可能にし、読みやすくしています。また、関数のドキュメンテーション文字列(docstring)により、関数の目的と使用方法が明確になります。

関数の呼び出し

関数の呼び出しとは、定義された関数を実行することです。関数を呼び出すには、その関数名を使い、必要な引数(関数に渡す値)を指定して括弧内に記述します。関数はパラメータを取り、必要に応じて戻り値を返します。

例1: 引数なしの関数の呼び出し

def greet():
    """Print a greeting message."""
    print("Hello, World!")

# 関数の呼び出し
greet()  # 出力: Hello, World!

この例では、引数を必要としない関数greetを呼び出しています。呼び出しは、関数名に括弧を付けることで行われます。

例2: 引数を持つ関数の呼び出し

def add(a, b):
    """Return the sum of a and b."""
    return a + b

# 関数の呼び出し
result = add(3, 5)
print(result)  # 出力: 8

この例では、2つの引数(ab)を持つ関数addを呼び出しています。関数の呼び出し時に、必要な引数を括弧内に指定します。

例3: キーワード引数を使った関数の呼び出し

def greet(name, greeting="Hello"):
    """Print a personalized greeting message."""
    print(f"{greeting}, {name}!")

# 関数の呼び出し
greet("Alice")  # 出力: Hello, Alice!
greet("Bob", greeting="Hi")  # 出力: Hi, Bob!

この例では、デフォルト値を持つキーワード引数greetingを使って関数greetを呼び出しています。キーワード引数は、関数の呼び出し時に引数名を指定して値を渡すことができます。キーワード引数を省略すると、デフォルト値が使用されます。

関数の呼び出しは、必要な引数を適切に渡すことで、関数の機能を利用できます。関数の結果を変数に代入したり、他の関数や式の一部として使用することもできます。

引数とパラメータ

パラメータ引数は、関数の定義と呼び出しに関連する2つの概念です。これらの概念は似ていますが、それぞれ異なる意味を持ちます。

パラメータは、関数が定義される際に、その関数が受け取る入力のリストまたは一連の項目を指します。パラメータは抽象的な概念で、関数が具体的にどのような値を受け取るかを指定するための「プレースホルダ」のようなものです。

例えば、次のような関数を考えてみましょう

def add(a, b):
    return a + b

ここで、abはパラメータです。これらは関数addが受け取る2つの入力を表しています。

一方、引数は、関数が実際に呼び出される際にその関数に渡される具体的な値を指します。

result = add(3, 5)

ここで、35は引数です。これらは関数addが呼び出される際に実際に渡される値を表しています。

要するに、パラメータは関数の定義における入力の「プレースホルダ」であり、引数は関数の呼び出しにおける実際の入力値です。

関数の戻り値

関数の戻り値とは、関数が計算または実行した結果を呼び出し元に返す値のことを指します。Pythonでは、returnステートメントを使って関数から値を返すことができます。

def add(a, b):
    """Return the sum of a and b."""
    return a + b

このadd関数は、2つの数値abの和を計算し、その結果を戻り値として返します。

関数の戻り値は、変数に代入することができます

result = add(3, 5)
print(result)  # 出力: 8

また、戻り値は他の関数の引数として直接使用することもできます

print(add(3, 5))  # 出力: 8

数がreturnステートメントに到達すると、その関数の実行は即座に終了し、指定された値が呼び出し元に返されます。returnステートメントがない場合、またはreturnステートメントが値を伴わない場合(つまり、単にreturnとだけ記述されている場合)、関数はNoneを返します。

def no_return_value():
    """This function does not return a value."""
    print("Hello, World!")

result = no_return_value()
print(result)  # 出力: None

この例では、no_return_value関数は値を返さないため、resultの値はNoneとなります。


以上、関数の最も基本的な使用方法について説明しました。次にもう少し複雑な無名関数(ラムダ関数)、高階関数、デコレータについて記述します。

この記事が気に入ったらサポートをしてみませんか?