【Python】関数を使ってみよう!(1)

Pythonロゴ

関数とは、特定の処理をかたまりとして保存して必要箇所から、呼び出しを行い使用する仕組みになります。

ショッピングサイトで消費税を計算するプログラムがあるとします。
消費税の計算は「商品詳細」「カート」「注文処理」「発注処理」など複数の箇所で利用されます。全ての機能に計算処理を書いた場合、計算の仕組みを変更するなど発生すると4箇所変更する必要があります。

関数を使うと4箇所に分かれていた消費税計算を1つにすることができます。
各処理からは呼び出しにて消費税処理使用します。

関数のあり・なしによるイメージ

関数の構文

関数は「def」という記述からおこないます。
引数と戻り値は記述なしでも動作する事が可能です。

def 関数名(引数1, 引数2):
    処理関連
    return 戻り値

関数の基本操作

関数を定義

def text_output():
    print('text print')

text_output()

# 結果 text print

戻り値がある関数

def text_return():
    return 'text return'

print(text_return())

# 結果 text return

引数がある関数

def input_output(text):
    print(text)

input_output('abc')
input_output('def')

# 結果
# abc
# def

引数について

引数に型を指定

引数に型を指定した場合、型違いによる例外エラーは発生しません。
エディタ等の入力補助の機能で型が決まっている旨が表示されますので複数人で開発をしている場合に有効になります。

def param_int(num: int):
    print(num)

param_int(123)

# 結果 123

デフォルト値設定

引数が設定されているのに、要素を入れない場合例外エラーが発生します。
デフォルト値を設定する事で例外エラーを無くすことができます。

def param_def(num=0):
    print(num)

param_def(123)
param_def()

# 結果
# 123
# 0

キーワード引数

引数は複数入力する場合、入力された順番で渡されます。キーワード引数を利用する事で順番関係無しに対象の変数に値を渡すことができます。

def param_keyword(str1, str2):
    print('str1:' + str1 + ' str2:' + str2)

param_keyword('aaa', 'bbb')
# 引数の順番が変われば出力も変わる
param_keyword('bbb', 'aaa')  
# 引数名を指定することで順番が変わって出力は変わらない
param_keyword(str2='bbb', str1='aaa')  

# 結果
# str1:aaa str2:bbb
# str1:bbb str2:aaa
# str1:aaa str2:bbb
# キーワード引数により順番関係無しに値が渡されています

複数の引数を1つの変数にまとめる

複数の引数を渡す際に、1つのタプル型変数にまとめることができます。
引数の前にアスタリスク(*)を1点付けます

def param_args(*args):
    print(args)

param_args('aaa', 'bbb', 'ccc')

# 結果 ('aaa', 'bbb', 'ccc')

複数の引数を辞書型にまとめる

キーワード引数を、1つの辞書型変数にまとめることができます。
引数の前にアスタリスク(*)を2点付けます

def param_dict(**dicts):
    print(dicts)

param_dict(str2='bbb', str1='aaa')

# 結果 {'str2': 'bbb', 'str1': 'aaa'}

戻り値について

戻り値に型を指定

戻り値に型を指定した場合、型違いによる例外エラーは発生しません。
エディタ等の入力補助の機能で型が決まっている旨が表示されますので複数人で開発をしている場合に有効になります。

def return_int(num) -> int:
    return num

print(return_int(123))

# 結果 123

docstringについて

docstringはPythonで作成した関数、クラスの説明分を記述します。
help関数または __doc__ を利用する事で内容を確認できます。

def 関数名(引数1, 引数2):
    """関数の簡易説明

    :param 引数1: 引数型 内容
    :param 引数2: 引数型 内容
    :return: 戻り値の型
    """

実際に関数に記述してみます

def docstrings_def(param1, param2):
    """この関数は引数で渡された氏名を出力します

    :param param1: str 氏名(姓)
    :param param2: str 氏名(名)
    :return: None
    """

    print(param1 + ' ' + param2)

docstrings_def('Osaka', 'Taro')

# 結果
# Osaka Taro

help関数で表示した場合下記のように表示されます。

help(docstrings_def)

# 結果
# docstrings_def(param1, param2)
#    この関数は引数で渡された氏名を出力します
#    
#    :param param1: str 氏名(姓)
#    :param param2: str 氏名(名)
#    :return: None

サンプルプログラム

こちらの記事で作成したプログラムはGitHub環境にアップしております。
下記からダウンロードいただけます。

参考 def1.py スクリプトGitHub python-beginner