Python

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

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

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

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

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

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

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

関数の定義

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

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

サンプル

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

def func():
    pass

この関数は、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

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

引数の使い方

戻り値・返り値

関数に戻り値を定義することで呼び出し元に値を返すことができます。戻り値は、returnキーワード を使って定義します。

def 関数名():
    return 返す値

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

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

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

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

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

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

サンプル

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

# 戻り値を返す関数
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の関数の使い方を解説しました。

今回のおさらい

以下の関数は、今回の記事の内容をほぼ全て盛り込んだ関数です。どこに何が使われているか確認しておさらいしてみてください。

def func(*args, arg: int=1, **kwargs) -> str: 
    print(args)
    print(arg)
    print(kwargs)
    return '戻り値1', '戻り値2'

val1, val2 = func(1, 2, 3, key1='value1', key2='value2')

print(val1, val2)

実行結果

(1, 2, 3)
1
{'key1': 'value1', 'key2': 'value2'}
戻り値1 戻り値2

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