例外処理を書くときに便利なPython機能3選
今回は例外処理を書くときに便利なPythonの機能3つを紹介します。
これから紹介する3つの機能(isinstance関数、raise文、f文字列)を使うと、以下のような例外処理をすっきりと書くことが出来ます。
また、今回は自作関数内の例外処理を例に説明していきますが、例外処理以外のところでも広く一般的に使われる便利な機能ですので、是非マスターしましょう。
# list型の引数aを取る関数
def simple_list_return(a):
# aがlist型であるかの判定
if not isinstance(a, list):
raise ValueError(f'引数{a}はlist型ではありません。')
return a
データ型の確認に便利 : type関数とisinstance関数
変数のデータ型を確認する方法には、大きく分けてtype関数とisinstance関数を用いた方法があります。二つの方法は厳密には違いがあります(オブジェクトがある子クラスのインスタンスであり、比較するデータ型としてその親クラスを渡した場合、前者はFalse、後者はTrueを返します)。しかし、初学者の場合はほぼ同じものとして扱って良いでしょう。
■type関数の使い方
type関数は変数のデータ型を返す関数です。サンプルとして、引数に100を足して返す関数を用意します。
a = [1, -5, 6]
print(type(a))
# list
これを用いることで、aが目的のデータ型を持っているのかの判定を、ブール演算で行うことができます。
type(a) == list
# True
type(a) == int
# False
■ isinstance関数の使い方
isinstance関数は、第一引数にそのデータ型を判定したいオブジェクト、第二引数に比較したいデータ型を持ちます。返り値は、第一引数のデータ型が第二引数の型と一致した場合にTrue、異なる場合はFalseとなります。
isinstance(a, list)
# True
isinstance(a, int)
# False
自作関数の例外処理に便利 : raise文
raise文は自作関数内での例外処理に便利です。先ほどのtype関数やisinstance関数で引数のデータ型を確認し、仕様とは異なるデータ型が検出された場合にraise文を用いて例外を発生させましょう。
if not isinstance(a, list):
str_err = '引数'+str(a)+'はlist型ではありません。'
raise ValueError(str_err)
このようにraise文では適切な例外を呼び出すことができ、自作関数内で好きなエラー文を設定することが出来ます。呼び出せる例外は様々ですが、今回紹介した「誤ったデータ型を引数に渡した場合」ではValueErrorを使います。
文字列に変数を挿入する : f文字列
f文字列は、文字列内に変数を挿入するのに便利です。例外処理を書くときだけでなく、様々な場面でとても役に立ちます。
先ほどのraise文の例では、ValueErrorで発生させるエラー文にstr関数で引数aを文字列に変換してから加算演算子で組み込む、という方法を採用しています。他にもformatメソッドを用いて文字列に変数を挿入する方法もあります。
str_err = '引数'+str(a)+'はlist型ではありません。'
これらに比べて、f文字列は、変数を文字列に挿入する最もシンプルかつ直感的な方法と言えます。やり方はとても簡単で、文字列の前に「f」または「F」をつけて、変数を「{}」の中に書くだけです。
a = 0.12345
print(f'aは{a}です。')
# aは0.12345です。
さらに通常の文字フォーマットと組み合わせることで、表示される変数値のフォーマットを変更することも可能です。
a = 0.12345
print(f'aは{a:.2f}です。')
# aは0.12です。
print(f'aは{a:.1e}です。')
# aは1.2e-01です。
Startlabのプログラミング入門コースは、Python未経験者・初学者にもわかりやすいカリキュラムと続けやすいサポート体制が魅力。自分の学習目的に合っているか、どういった知識を身に付けることができるのかなど、無料カウンセリングでぜひご相談ください!カウンセリングは毎日実施中、お待ちしております!