Pythonで型(タイプ)をチェックする標準的な方法とは?
Pythonでは、オブジェクトの型を確認する方法が主に2つあります。それぞれの使い方と違いを理解しておくと、より安全で意図に合ったコードを書くことができます。
type() と is を使った厳密な型チェック
オブジェクト x が指定した型そのもの(サブクラスを含まない)であるかを厳密に判定したい場合は、type() で型を取得し、is 演算子で比較します。
例
x = "Hello"
if type(x) is str:
print("xはstrのインスタンスです")出力
xはstrのインスタンスです
この方法では、x の型が正確に str である場合のみ True になります。str を継承したサブクラスのインスタンスは False と判定される点に注意してください。
isinstance() を使った柔軟な型チェック
一方、オブジェクト x があるクラス、またはそのサブクラスのインスタンスであるかどうかを調べたい場合は、isinstance() メソッドを使用します。こちらが一般的に推奨される方法です。
例
x = "Hello"
if isinstance(x, str):
print("xはstrのインスタンスです")出力
xはstrのインスタンスです
type() と isinstance() の違い
両者の違いが分かりやすい例として、bool と int の関係があります。bool は int のサブクラスなので、次のような結果になります。
x = True print(type(x) is int) # False(boolはintそのものではない) print(isinstance(x, int)) # True(boolはintのサブクラスなので)
継承関係を考慮したい場合は isinstance() を、厳密にその型だけを判定したい場合は type() is を使う、というのが基本的な使い分けの目安です。
-
【Python】約数の個数が偶数か奇数かを判定するプログラムの書き方
この記事では、ある整数の約数の個数が偶数か奇数かを判定するPythonプログラムについて、その考え方と実装方法をわかりやすく解説します。 問題文 ある数「n」が与えられたとき、その約数の総数が偶数であるか奇数であるかを判定してください。 例えば、n = 10 の場合、約数は 1, 2, 5, 10 の4つなので「偶数」。一方、n = 100 の場合は 1, 2, 4, 5, 10, 20, 25, 50, 100 の9つとなり「奇数」となります。 アプローチ:約数を実際に数える 最も基本的な方法は、すべての約数を見つけ、その個数が偶数か奇数かをチェックすることです。 ここで重要なのは、約数
-
Pythonで例外をログに記録する最良の方法とは?
Pythonプログラムの開発や運用において、例外(エラー)が発生した際にその詳細をログとして残しておくことは、トラブルシューティングやデバッグを行う上で非常に重要です。Pythonでは標準ライブラリのloggingモジュールを使うことで、例外情報を簡単かつ確実にログへ記録できます。 logging.exceptionメソッドで例外ログを作成する まずloggingモジュールをインポートし、exceptブロック内でlogging.exception()メソッドを呼び出します。このメソッドは、指定したメッセージに加えて、発生した例外の種類やスタックトレース(Traceback)を自動的に付加して