【Python入門⑤】関数

共テ情報I – 最小限のPython入門

解説動画

【MENU】
00:00 要項:関数
15:40 Sample 5-1
21:00 Sample 5-2
26:48 おわりに
END 28:00

関数は,特定の処理を行うための命令群をまとめ,名前をつけたもので,コードの再利用性を高め,複雑なプログラムを簡潔にするために用いられる.関数を使用することで,コードの重複を避け,効率的なプログラムを作成できる.

関数の定義

関数の定義には, def キーワードを用い,関数名,引数,処理内容を記述する.関数名は,変数と同様の命名規則に従って付ける.

def 関数名(引数1, 引数2, ...):  # 引数はなくてもよい
# 関数の処理
return 戻り値 # 戻り値は必要なければ省略可能

関数の呼び出し

関数を定義した後,具体的な値を引数として渡し,その処理を実行する.

関数名(引数1に渡す値, 引数2に渡す値, ...)
### 引数に与えられた名前を用いて挨拶を行う関数を定義し,"太郎" という引数で呼び出す.

def greet(name):
    print("こんにちは," + name + "!")

greet("太郎")    # 出力:こんにちは太郎!

関数の引数

関数の引数とは,関数に渡される変数または値のことである.これにより,同じ処理を異なるデータで繰り返すことができる.なお,決まった操作を行うだけの,引数を取らない関数も定義可能である.

# 2つの引数を持つ関数の例

def syoukai(namae, nenrei):
    print(namae+"さんは"+str(nenrei)+"才です.")

syoukai("くにごろう", 17)  # 出力:くにごろうさんは17才です.
# namaeに"くにごろう"が,"nenrei"に15が代入され,関数が呼び出された.
# 引数を持たない関数の例

def hello_world():
    print("Hello, World!")
    print("こんにちは,世界!")

hello_world()

関数の戻り値

関数は処理結果を return 文を用いて呼び出し元に返すことができる.戻り値がない場合もある(処理の結果を直接表示したり,何かの状態を変更したりする目的で使用されることが多い).

### 関数の戻り値を利用する例

def multiply(x, y):  # 2つの数値の積を返す関数を定義
    return x * y

# 関数の戻り値を変数に代入して利用する
result = multiply(4, 5)
print(result)  # 出力: 20

# 戻り値を他の関数の引数として直接使用する
print(multiply(3, 3))  # 出力: 9

※ すでに扱ってきたprint(), input(), type(), int(), float(), str()などは,Pythonで定義済みの関数で,組み込み関数と呼ばれる.
※ キーワード引数:引数名を指定して値を渡すことができる.これにより,引数の順序を変更することが可能である.
※ デフォルト引数:関数定義時にパラメータの初期値を設定することができる.呼び出し時に対応する引数が提供されない場合,このデフォルト値が使われる.
※ 複数の戻り値を返す関数を定義することもできる(タプルを使う).

Sample 5-1

2次方程式の3つの係数を引数にとり,2つの解をリストとして返す関数.

def kai_koshiki(a, b, c):
    D = b ** 2 - 4 * a * c

    if D < 0:
        return "実数解なし"
    else:
        kai1 = (-b + D ** 0.5) / (2 * a)
        kai2 = (-b - D ** 0.5) / (2 * a)
        return [kai1, kai2]

# 関数の呼び出し
ichiji = kai_koshiki(1, -4, 3)
print(ichiji)

Sample 5-2

引数nを与えるとフィボナッチ数列を第n-1項まで生成し,リストとして返す関数.

def fibonacci(n):  # n > 2とする.

    suretsu = [0, 1]

    for i in range(2, n, 1):  # 2, 3, 4, ... , n-1
        suretsu.append(suretsu[i - 1] + suretsu[i - 2])

    return suretsu

# 関数の呼び出し
print(fibonacci(200))