真偽値とは:TrueとFalseの世界#

はじめに#

これまでの記事では、数値(整数や小数)と文字列という基本的なデータ型について学んできました。今回は、プログラミングでもう一つ重要な基本データ型である「真偽値(Boolean型)」について学んでいきましょう。

真偽値は、「はい/いいえ」「オン/オフ」「真/偽」などの二択の値を表現するためのデータ型です。コンピュータの世界では、この「真か偽か」の概念が非常に重要な役割を果たしています。

真偽値の基本#

Pythonでは、真偽値は次の2つの値のみを持ちます。

  • True - 真、はい、オン
  • False - 偽、いいえ、オフ

これらの値は特別な予約語であり、常に最初の文字が大文字で残りが小文字になります(trueFALSEではなく、必ずTrueFalse)。

Google Colabで以下のコードを実行して、真偽値の基本を確認してみましょう。

>
# 真偽値の基本
is_active = True
has_permission = False

print(f"is_active: {is_active}")
print(f"has_permission: {has_permission}")

# 型を確認
print(f"is_activeの型: {type(is_active)}")
print(f"has_permissionの型: {type(has_permission)}")

実行結果:

is_active: True
has_permission: False
is_activeの型: <class 'bool'>
has_permissionの型: <class 'bool'>

真偽値の型はbool(boolean の略)と表示されます。

Truthyな値とFalsyな値#

Pythonでは、真偽値以外の値も条件式の中で「真」または「偽」として評価されます。

  • Falsyな値(偽と判断される値):
    • False
    • None
    • ゼロ(0, 0.0など)
    • 空のシーケンスや集合('', (), [], {}など)
  • その他の値は全てTruthy(真と判断される)
>
# Truthyな値とFalsyな値
values = [True, False, 0, 1, '', 'hello', [], [1, 2], {}, {'a': 1}, None]

for value in values:
    if value:
        result = "Truthy"
    else:
        result = "Falsy"
    print(f"{value}: {result}")

実行結果:

True: Truthy
False: Falsy
0: Falsy
1: Truthy
: Falsy
hello: Truthy
[]: Falsy
[1, 2]: Truthy
{}: Falsy
{'a': 1}: Truthy
None: Falsy

この性質は、Pythonの条件式で「値が存在するかどうか」をシンプルに表現できるため便利です。リストとforループは次回以降の記事で詳しく学びますが、上記のコードでは、リストvaluesに含まれる各値がそれぞれTruthyかFalsyかを順番に判定しています。

bool()関数#

bool()関数を使うと、任意の値を真偽値に変換することができます。

>
# bool()関数
print(f"bool(100): {bool(100)}")
print(f"bool(0): {bool(0)}")
print(f"bool('hello'): {bool('hello')}")
print(f"bool(''): {bool('')}")
print(f"bool([1, 2]): {bool([1, 2])}")
print(f"bool([]): {bool([])}")

実行結果:

bool(100): True
bool(0): False
bool('hello'): True
bool(''): False
bool([1, 2]): True
bool([]): False

等価性と同一性#

Pythonでは、値の等価性(値が等しいか)と同一性(同じオブジェクトか)を区別します。

  • ==演算子:等価性をチェック(値が等しいか)
  • is演算子:同一性をチェック(同じオブジェクトか)
>
# 等価性と同一性の違い
a = [1, 2, 3]
b = [1, 2, 3]  # aと同じ値を持つが、別のオブジェクト
c = a  # aと同じオブジェクト

print(f"a == b: {a == b}")  # 値は同じ
print(f"a is b: {a is b}")  # 別のオブジェクト
print(f"a is c: {a is c}")  # 同一のオブジェクト

実行結果:

a == b: True
a is b: False
a is c: True

同一性(同じオブジェクトか)というのがわかりづらいかもしれませんが、2つの変数がメモリ上の同じ場所を指しているかどうかを確認するものです。上記のコードの場合、abは同じ値を持っていますが、それぞれ別のタイミングで値を定義しているため、メモリ上の異なる場所にデータが格納されています。そのため、a is bFalseになります。一方、cにはaを直接代入していることからcaと同じオブジェクトを指しているため、a is cTrueになります。

is演算子は主にNoneとの比較(値が空かどうかの確認)によく使われます。

>
# Noneとの比較
value = None
print(f"value is None: {value is None}")

実行結果:

value is None: True

まとめ#

この記事では、Pythonの真偽値(Boolean型)について学びました。

  • 真偽値はTrueFalseの2つの値を持つ
  • Pythonでは真偽値以外の値も条件式で真/偽として扱われる
  • bool()関数で任意の値を真偽値に変換できる
  • ==演算子で値の等価性を、is演算子で同一性を確認できる

真偽値は特に条件分岐(if文)や繰り返し処理(while文)で重要な役割を果たします。これらの制御構造は次回以降の記事で詳しく学びます。次回は、真偽値を作り出すための比較演算子について詳しく見ていきましょう。