この記事では、Pythonのbool型について解説します。
boolは、オンやオフなどの二者択一を表す場合や比較演算の演算結果として用いられています。また、フラグとしても使われたりと頻繁に使用される型です。
それでは、bool型について見ていきましょう!
boolとは?
boolとは、真偽値を定義するためのint型のサブクラスです。
真偽値とは、「真」(True)または「偽」(False)であるかを示す値のことです。「オン」や「オフ」の2つの状態を表現したり判定する際に使用されます。
また、「真理値」や「bool値」と呼ばれたりもします。
boolの基本的な使い方
bool値であるTrue(トゥルー)とFalse(フォルス)は組み込み定数として定義されています。なので、直接呼び出すだけで使用可能です。
print(True) # True print(False) # False print(type(True)) # <class 'bool'> print(type(False)) # <class 'bool'>
定数なので代入しようとするとSyntaxErrorが発生します。
True = 1 # SyntaxError
bool型のコンストラクタから新しいインスタンスを生成しようとしても必ずTrue、またはFalseのどちらかが生成されます。どのような値がTrue、Falseになるかは後述します。
print(bool(1)) # True print(bool(0)) # False
bool値はint型のサブクラスなので数値処理を行うこともできます。その場合は、True = 1、False = 0として扱われます。
print(0 + True) # 1 print(0 + False) # 0
この性質を利用することでリストなどに格納されているbool値の中に何個Trueが存在するかをsum関数を使って調べることができます。
l = [True, False, True] print(sum(l)) # 2
boolの判定
bool値はif文やwhile文の条件式として使用されることがある。
if True: # 実行される while True: # 無限ループ
上記のようにbool値を直接指定することもあるが大体は比較演算子などで条件を決めて指定する。また、bool値を返す関数を使ったりもする。
num = 10 # 比較演算子 if num < 20: print('numは20未満です') # bool値を返す関数 if issubclass(bool, int): print('boolはintのサブクラスです')
また、その他のオブジェクトもbool値として使用可能です。その場合、以下のような値がFalseとして扱われます。
- 偽であると定義されている定数:
NoneとFalse - 数値型におけるゼロ:
0,0.0,0j,Decimal(0),Fraction(0, 1) - 空のシーケンスまたはコレクション:
'',(),[],{},set(),range(0)
これら以外のオブジェクトはTrueとして扱われます。
# 実行される if 1: if 'abc': if [1, 2, 3]: # 実行されない if 0: if '': if []:
boolに変換
bool()を使うことで他の型のオブジェクトをbool値であるTrue、またはFalseに変換することができます。
# 0、または空でない場合 = True i = bool(16362427) f = bool(0.1) st = bool('Hello') l = bool([1, 2, 3]) t = bool(('a', 'b', 'c')) d = bool({'a': 1, 'b': 2, 'c': 3}) s = bool({9, 8, 7}) # 0、または空の場合 = False i = bool(0) f = bool(0.0) st = bool('') l = bool([]) t = bool(()) d = bool({}) s = bool(set())


