Python

【Python】関数の定義と使い方を解説

この記事では、Pythonの関数の定義と使い方を解説します。

関数とは、処理をまとめて何度でも呼び出せるようにしたものです。なんども同じ処理をしたい場合は、関数を定義した方が効率的です。

例えば、print()なんかも関数の1つです。関数には、「あらかじめ言語が用意しているもの」と「自分で定義するもの」があります。

あらかじめ用意されている関数を「built in function(ビルト イン ファンクション)」とか「組み込み関数」などと呼び、自分で定義する関数を「自作関数」とか「ユーザー定義関数」などと呼びます。

この記事では、ユーザー定義関数について解説します。
組み込み関数の使い方を知りたい方はこちら

それでは、関数の定義方法と使い方を見ていきましょう❗️

関数の定義

関数を使うには、まず関数を定義する必要があります。

定義

関数は「defキーワード」を使って以下のように定義します。

def 関数名():
    なんらかの処理

関数に付ける名前には、以下のような規則があります。

  • 関数名には英小文字を使う
  • 単語のつなぎ目は_(アンダーバー)で区切る(get_dataなど)
  • 予約語や組み込み関数と名前が被らないように注意する

サンプル

以下のコードでは、funcという名前の空の関数を定義しています。

def func():
    pass

この関数は、pass文を使って何も処理しません。Pythonでは、関数などのブロック内に何も記述しないとエラーになってしまうので、何も処理したくない場合はpass文を記述しておく。

ブロック内でなにもしない時はpass文を使おう!

関数の呼び出し

定義した関数を使用するには、実行したい箇所で呼び出す必要があります。ちなみに、関数を使用(実行)することを「呼び出す」と表現します。

構文

関数を呼び出すには、関数名の後に()を付けて実行します。

関数名()

サンプル

試しに「Hello world」を出力するだけのhelloworld()関数を定義して2回呼び出す。

def helloworld():
    print('Hello world')

helloworld()
helloworld()

実行結果

Hello world
Hello world

関数を2回呼び出すことができました。

関数の参照を変数に代入する

関数の参照を変数に代入し、変数を通して関数を呼び出すことができます。関数を変数に代入することで動的に呼び出す関数を変更したりすることができます。

構文

関数の参照を変数に渡すには、()を付けずに関数を変数に代入します。

変数 = 関数名

変数に代入された関数は通常の関数と同じく呼び出すことができます。

変数 = 関数名

変数()  # 代入された関数の実行

サンプル

以下のコードで定義したfunc()関数は、1+2print()で出力するだけの関数です。その関数を通常の呼び出しと、変数に参照を渡して呼び出す2パターンで実行しています。

# func関数の定義
def func():
    print(1 + 2)


# func関数の呼び出し
func()

# f変数にfunc関数の参照を代入
f = func
# f変数に代入されたfunc関数の呼び出し
f()

実行結果

3
3

関数の参照を代入した変数から元の関数を呼び出すことができました。

引数

引数を定義することで呼び出し時に値を外部から受け取って関数内で使用することができます。同じ処理を値だけ変えて実行したい場合などに使用されます。

定義

引数は以下のように定義します。関数定義時に定義する名前を「仮引数」と呼びます。

def 関数名(仮引数):
    なんらかの処理

引数は複数定義することができます。

def 関数名(仮引数1, 仮引数2, ..., 仮引数N):
    なんらかの処理

呼び出し

引数が定義された関数は、以下のように呼び出します。関数呼び出し時に渡される値を「実引数」と呼びます。

関数名(実引数)

引数がいくつか定義されている場合は、以下のように呼び出します。

関数名(実引数1, 実引数2, ..., 実引数N)

サンプル

以下のコードでは、引数で受け取った値で和を計算しています。

def add(x, y):
    print(f'{x} + {y} = {x + y}')

add(1, 2)

実行結果

1 + 2 = 3

引数では、初期値を指定したり1つの引数で複数の値を受け取ったりできます。さらに詳しい引数の使い方は以下の記事を参照してください。

引数の使い方

戻り値・返り値

関数に戻り値を定義することで呼び出し元に値を返すことができます。

定義

戻り値は、「returnキーワード」を使って定義します。

def 関数名():
    return 返す値

returnはいくつでも記述可能です。if文で処理を分岐した時などに使います。

def 関数名():
    if 条件式:
        return Trueの時に返す値
    else:
        return Falseの時に返す値

1つのreturnで複数の値を返すことができます。カンマ(,)で値を区切って記述することで複数の値をタプルとして返すことができます。

def 関数名():
    return 値1, 値2, ..., 値N

注意

関数はreturnが処理されたらそこで終了してしまいます。なので、returnを記述する場所には注意しましょう。

def 関数名():
    print('関数開始')
    return
    print('関数終了')  # このprint()は処理されません

サンプル

関数に戻り値を定義して呼び出し元で受け取ってみます。

# 戻り値を返す関数
def add(x, y):
    return x + y

# result変数にadd関数の戻り値を代入
result = add(1, 2)
print(result)

# 関数にそのまま渡すこともできる
print(add(13, 54))

実行結果

3
67

呼び出し元で関数が返した値を受け取ることができました。

型アノテーション

引数と戻り値に使用する型を指定することができます。ただし、異なる型の値が渡されたとしてもエラーを発生させるような強制力はありません。

mypyを使うことで型通りに使用できているかチェックしたりすることができます。

型ヒントで使用する型を指定しよう【アノテーション】

定義

引数の型アノテーションは、引数名と型名を:で区切って記述します。

def 関数名(引数名: 型名):
    何かしらの処理

# 引数に初期値が定義されている場合
def 関数名(引数名: 型名=初期値):
    何かしらの処理

戻り値の型アノテーションは、->を使って記述します。

def 関数名() -> 型名:
    何かしらの処理

型ヒントで使用する型を指定しよう

サンプル

試しに型アノテーションを定義した関数を使ってみましょう!

def func(val: int) -> float:
    return val / 2


print(func(187))

実行結果

93.5

使っているエディタによっては、型アノテーションで定義した型を関数呼び出し時に表示してくれたりします。ちなみに、エディタはVisual Studio Codeを使っています。

まとめ

この記事では、Pythonの関数の使い方を解説しました。

「プログラミング = 関数を書く」と言っていいほど関数はめちゃんこよく使うのでしっかり覚えておきましょう。

それでは今回の内容はここまでです!ではまたどこかで〜( ・∀・)ノ