この記事では、Pythonの関数についてまとめていきます。
そもそも、Pythonで関数を使うメリットって何?
まずは、初心者の方向けにPythonで関数を使うメリットを解説します。
Pythonで関数を使う事で、関数の中に書いたコードを何回も使いまわすときに、関数を呼び出すだけで良くなるので、コードを効率よく書けるようになります。
また、プログラミングはコードを書いて終わりではなく、その後もコードを改修していく必要がありますが、処理を関数毎に分けておくことで、「この関数にはこの処理が書かれている」と言う風にコードを分割できるので、コードの回収もしやすくなるのです。
Pythonでの関数の作り方
Pythonではdefキーワードを使って関数を定義していきます。
以下は、コードの一例です。
def hello():
print('Hello World')
def add(x, y):
print(f'arguments are {x} and {y}')
return x + y
また、Pythonでは特に処理をしない空の関数を定義することもできます。
下のコードでは、function_name
関数内にコメントを書いているだけです。
def function_name(arguments):
# code statements
この記事もチェック:Pythonでの変数の定義やスコープ、削除、globalキーワードを解説していく
Pythonでの関数の呼び出し
関数は、関数名を指定することで呼び出すことができます。
もし、関数が引数を受け取る場合は、関数を呼び出す際に引数を渡さなければなりません。
hello()
sum = add(10 , 5)
print(f'sum is {sum}')
上記のコードでは、先ほど定義したhello()関数とadd()関数を呼び出しています。
また、Pythonの組み込み関数の1つであるprint()関数も呼び出しています。
この記事もチェック:Pythonのrandint関数の使い方|引数や範囲指定のやり方を解説
Pythonの関数の種類について
Pythonには2種類の関数があります。
1. 組み込み関数。
print()、len()、str()などのPythonが提供する関数。
- ユーザー定義関数:Pythonのプログラムの中でプログラマが作る関数。
関数にデフォルトの引数を持たせる方法
Pythonでは、関数の引数にデフォルト値を設定することができます。
呼び出し側が引数を渡さなかった場合、デフォルト値が使用されます。
def hello(year = 2022):
print(f'Hello World {year}')
hello(2020) # 引数が渡された場合
hello() # 引数がない場合,代わりにデフォルト値が渡される
結果は以下の様になります。
Hello World 2020
Hello World 2022
この記事もチェック:Pythonのmapメソッドの使い方|ラムダ関数や引数が複数の場合の使い方も解説
関数に複数の戻り値を持たせる方法
Pythonの関数は複数の戻り値、return文を書くことができます。
ただし、return文の1つに到達すると、関数の実行は終了し、その値は呼び出し元に返されます。
def odd_even_checker(i):
if i % 2 == 0:
return 'even'
else:
return 'odd'
print(odd_even_checker(20))
print(odd_even_checker(15))
この記事もチェック:Pythonのreturnの解説、戻り値なしやif文,複数返す方法を解説
Pythonの関数の引数について
Pythonでは、関数定義に3種類のパラメータを使用することができます。
- これまでの例で見てきたもの。
- 可変個数 キーワード以外の引数:例えば、def add(*args)
-
キーワード引数や名前付き引数の数:例えば、def add(**kwargs)
Pythonの変数引数に関する重要なポイントとして、以下のようなものがあります。
- 引数の順番は、形式引数、 *args, kwargs とします。
- argsとkwargsに変数パラメータ名を使用することは必須ではありません。しかし、コードの可読性を高めるために使用するのがベストプラクティスです。
- argsの型は多プルです。したがって、マッピングされるタプルを変数argsに渡すことができます。
-
kwargsの型は辞書型です。
kwargsの型は辞書型なので、辞書型を渡してargs変数とマッピングすることができます。
関数内で変数の引数を使用する簡単な例を示します。
def add(x, y,*args, kwargs):
sum = x + y
for a in args:
sum += a
for k, v in kwargs.items():
sum += v
return sum
total = add(1 , 2 , *(3 , 4), {"k1": 5 ,"k2": 6})
print(total)# 21
この記事もチェック:Pythonのexec関数の使い方|引数や変数の使い方を解説する
Python関数のデータ型
Python の関数は ‘function’ クラスのインスタンスです。
これはtype()関数で確認することができます。
def foo():
pass
print(type(foo))
Pythonで匿名関数を使う方法
Pythonで匿名関数を使う場合は、lambda
を使えばOKです。
lambda
を使えば、関数を引数に渡す処理等をシンプルに書けるようになります。
def square(x):
return x * x
f_square = lambda x: x * x
print(square(10)) # 100
print(f_square(10)) # 100