どのようなオブジェクトが真(True)や偽(False)と評価されるのか

if 文や for 文などの条件式でオブジェクトが記述された場合に、どのようなオブジェクトが真(True)でどのようなオブジェクトが偽(False)と判定されるのかについて解説します。

(Last modified: )

真や偽と判定される基準

if 文などの条件式で比較演算子や論理演算子を使った式を記述した場合、結果としてブール値の True または False を返します。(ブール値については「ブール値(True、False)の使い方」を参照されてください)。その結果に従って続くブロック内の文を実行するのかが決まります。

このような条件式を記述するところでオブジェクトをそのものを記述した場合に真( True )と判定されるのか偽( False )と判定されるのかについては次のルールに従います。(以下では真か偽かの判定に組み込み関数の bool 関数を使用しています。 bool 関数については「bool関数の使い方(オブジェクトが真か偽か判定する)」を参照されてください)。

組み込み定数の中でブール値である True は真、 False は偽と判定されます。また None は偽、 NotImplemented は真と判定されます。

print(bool(True))
>> True
print(bool(False))
>> False
print(bool(None))
>> False
print(bool(NotImplemented))
>> True

数値型の値は 0 、 0.0 , 0j は偽、それ以外の値は真と判定されます。

print(bool(0))
>> False
print(bool(5))
>> True
print(bool(0.0))
>> False
print(bool(0.1))
>> True
print(bool(0j))
>> False

文字列型は空文字"" は偽、それ以外は真と判定されます。

print(bool(""))
>> False
print(bool("Hello"))
>> True

空のタプル()、空のリスト[]、空のディクショナリ{}は偽、それ以外は真と判定されます。

print(bool(()))
>> False
print(bool(("Blue","Red")))
>> True
print(bool([]))
>> False
print(bool(["Apple", "Orange"]))
>> True
print(bool({}))
>> False
print(bool({"A":"Apple","O":"Orage"}))
>> True

主なオブジェクトについて真と判定されるものと偽と判定されるものについて確認しました。

サンプルコード

次のサンプルを見てください。

name = ""
if name:
    print("名前は" + name + "です")
else:
    print("名前は未登録です")

>> 名前は未登録です

name = "Yamada"
if name:
    print("名前は" + name + "です")
else:
    print("名前は未登録です")

>> 名前はYamadaです

変数 name に最初は空文字を代入し、次に空文字ではない文字列を代入して if 文の条件式でそれぞれ評価しました。空文字は偽、空文字ではない文字列は真と判定されました。

-- --

条件式でオブジェクトが記述された場合に、どのようなオブジェクトが真(True)でどのようなオブジェクトが偽(False)と判定されるのかについて解説しました。

( Written by Tatsuo Ikura )

プロフィール画像

著者 / TATSUO IKURA

これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。