ゆんの業務改善ブログ

①生産性向上 ②業務改善 ③自動化 について情報発信しています。VBAプログラムは本当の初心者から他のアプリケーションを呼び出して使う上級者的な使い方まで幅広いレベルで解説していきます。

【Python】ユーザー定義関数を作る|def文

Pythonでユーザー独自の関数を作成する方法を解説します。

目次

def文で独自の関数を定義する

関数とは

関数とはある機能を持ったプログラムの塊のことです。入力値を受け取って何かの値を出力したり、特定の動作をしたりします。今回は自分で関数を作る方法を見て行きます。ちょっとした自動化プログラムを作るときでも、メンテナンスや使い回ししやすくなることを考えると、自分で関数を作れた方がいいと思います。

def文で自分の関数を作る

自分で関数を定義するにはdef文を使います。今回は、2つの例を挙げます。

具体例1-消費税の計算-

ひとつめの例は消費税の計算です。下記の様な分岐をさせる関数を作ります。

ユーザー定義関数の例
消費税計算機のイメージ
酒でなく、かつ店内でもない場合は8%。それ以外は10%という簡略化したロジックで実装します。

#ユーザー定義関数を作成する
def tax_ratio(sake, gaishoku):
    if sake == False and gaishoku == False:
        return 0.08
    else:
        return 0.10

#ユーザー定義関数を使う
print(tax_ratio(False, False)) #0.08
print(tax_ratio(True, False)) #0.1
print(tax_ratio(False, True)) #0.1
print(tax_ratio(True, True)) #0.1

無事に自分で作ったtax_ratioという関数を使って消費税の計算ができました。tax_ratioの後のカッコの中にsake、gaishokuと言うふたつの変数が書かれています。これは、ユーザー定義変数を呼び出して利用したときに与えられた引数を、defの中で何という変数名で使うかをここで宣言します。

このプログラムの例で言えば、FalseやTrueと言った値をsakeやgaishokuという変数で受けとってdefのなかで利用しています。

小数点以下を2桁に揃えたいので、関数を使うところを少し手直しします。

#ユーザー定義関数を作成する
def tax_ratio(sake, gaishoku):
    if sake == False and gaishoku == False:
        return 0.08
    else:
        return 0.10


#ユーザー定義関数を使う
print('{0:.2f}'.format(tax_ratio(False,False))) #0.08
print('{0:.2f}'.format(tax_ratio(True,False))) #0.10
print('{0:.2f}'.format(tax_ratio(False,True))) #0.10
print('{0:.2f}'.format(tax_ratio(True,False))) #0.10

.format関数を使って小数点以下の桁数を合わせる方法は本題から外れるため、今回の記事での解説は割愛します。

具体例2-更新日時を反映したファイル名-

次にふたつ目のサンプルコードです。あるデータを更新する業務の場合、最新の更新日時が知りたいことは良くあると思います。今回はファイル名に日次を反映させる目的で、sample_data_と日次を連結させるという関数を作成します。

import datetime

#ユーザー定義関数を作成する
def file_name():
    return 'sample_data_' + str(datetime.datetime.now())

#ユーザー定義関数を使う
print(file_name())

このプログラムで作成したfile_name()という関数は引数を取りませんでしたので、カッコの中が空欄になっています。このように関数であっても引数を取らない場合もあります。今回はdefの中で使うモジュールをインポートしていますが、インポートする部分はdefの外に出しています。

defの中に入れても動きますが、普通はプログラムの冒頭に書くのが一般的で、defの中には入れないことが多いようです。

def文で独自の関数を定義する方法まとめ

  • 関数はある機能を持ったプログラムの塊
  • def文で自分の関数を作れる
  • def文で定義する時のカッコの中は引数を受け取る時のdefの中で使う変数名
  • ふつうはimport文はdefの外に書く

自分独自の関数を使って、使い廻しによるプログラミングの効率アップとメンテナンス性アップを目指しましょう。

<関連記事>