値が入っているか検証する if 文(暗黙のキャスト)

FacebooktwitterredditpinterestlinkedinmailFacebooktwitterredditpinterestlinkedinmail

基本

Python の if文、 if 構造は式が条件を満たしているか、満たしていないか、という条件を真偽値を使って判定するものでした。

詳しくは if 構造と真偽値のページで様々な演算子を用いた例も含めて解説しています。

Python で条件分岐:if 構造と真偽値

このように、様々値を式に含めることで条件を判定、処理分岐を行えますが、いちいち不等式や等式を記述するのが冗長な場合があります。

こういった場合には、様々な型・オブジェクトを真偽値に変換(キャスト)して判定すると、すっきりしたコードにすることができます。

真偽値にキャストした場合の動作

代表的なキャストした場合の動作は以下のようになります。

  • 整数型: 0 が False, 0以外が True
  • 浮動小数点型: 0.0 が False, 0.0以外が True
  • 文字列型: 空の文字列(“”)が False, 空の文字列以外が True
  • リストやタプル, 辞書型: 空のリストや空のタプル、空の辞書が False, それ以外は True

真偽値に(暗黙の)キャストをするサンプルコード

x = 10
if x:
    print("x is True")

y = 0.0
if not y:
    print("y is False")

z = "non-empty string"
if z:
    print("z is True")

lst = [1, 2, 3]
if lst:
    print("lst is True")

empty_lst = []
if not empty_lst:
     print("empty_lst is empty")

このようにif の後に直接変数を書くか、 not 演算子の後ろに書いて論理否定とすることで、与えられた変数を真偽値に暗黙的に変換して、 if 文による判定を行うことができます。

見ての通り、非常にすっきりとしたコードになり読みやすくなります。例えば、関数の実行結果であったり、ユーザーの入力結果であったりをチェックする場合などによく使われます。

一方で、浮動小数点型の 0.0 と 0.01の違いや、整数型の負の値など、直感的に真偽値にキャストされた後にどう判定されるか? が分かりにくい場合があります。

そういった場合には無理に暗黙のキャストを使わずに、真偽値を使った式によって判定を行った方がバグが少なくなります。

created by Rinker
¥2,376 (2023/08/07 09:27:24時点 Amazon調べ-詳細)
FacebooktwitterredditpinterestlinkedinmailFacebooktwitterredditpinterestlinkedinmail

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

最新の記事