• True・False・None

    True・False・Noneについて学んでいきましょう。

    Pythonでは、条件分岐やデータを保持する手段として、True、False、Noneという3つの予約語があります。

    例えば、1 > 5 はTrueになります。ただ、PythonはなにをTrueとしているのでしょうか?

    ここから、True・False・Noneについて一歩深い理解をしていきましょう。

    Falseとは

    まずはFalseについてです。なぜFalseを先にやるのかというと、PythonではFalse以外はすべてTrueとみなされるからです。

    False以外が全てTrueということが何を意味するのか、少しイメージがわきづらいと思いますが、後ほど紹介するTrueの具体例を見るとイメージがわくと思いますので安心して下さい。

    Falseとみなされる内容をまとめた表がこちらです。

    Falseとみなされる値
    整数 0
    浮動小数点 0.0
    文字列 ' '
    リスト []
    タプル ()
    辞書 {}
    集合 set()

    では、Falseの具体例をみていきましょう。

    コード
    

    if []:

        print('yes')

    else:

        print('no')

    アウトプット
    

    no

    空のリストを条件分岐の条件にしてコードを実行したところ、文字列のnoが返ってきました。

    つまり、空のリストはFalseとみなされることがわかります。

    NoneもFalseになる

    上記の表に加えて知っておくべきこととして、Noneがあります。

    Noneは基本的にはFalseと同じです。具体的な例では、「if None」と、「if False」は同じように扱われます。

    しかし、Noneは厳密にはFalseと同じではありません。

    NoneとFalseの違いはこの記事の下で解説していますが、条件分岐では、NoneもFalseになるということを頭に入れておきましょう。

    Trueとは

    次にTrueについて学んでいきましょう。

    はじめにお伝えしたように、False以外はすべてTrueとされます。

    具体的なコードで見ていきましょう。

    コード
    

    if 'dog':

        print('true!')

    else:

        print('false!')

    アウトプット
    

    true!

    dogという文字列は条件分岐の時にTrueとみなされますので、if文の下のコードが実行されます。

    つまり、Falseとみなされるデータ以外のデータは、全てTrueになります。

    この点は意外と忘れがちになりますので、覚えておきましょう。

    Noneとは

    さて、さきほど、条件分岐ではNoneはFalseとほとんど同じ、とお伝えしました。

    では、FalseとNoneでは何が違うのでしょうか?

    その答えは、is演算子にあります。

    if文では、FalseとNoneは同じものとして扱われますが、is演算子を使うと、NoneとFalseを区別することができます。

    つまり、is演算子を使うと、True、False、Noneの3つの条件で分岐の判断をすることが可能になるのです。

    実際のコードでみていきましょう。

    コード
    

    a = None

    if a is False:

        print(' a is False')

    elif a is True:

        print('a is True')

    elif a is None:

        print('a is None')

    アウトプット
    

    None

    変数aは、Trueでもなく、Falseでもないことが確認できました。

    Noneは何も存在しないこと

    また、違う観点でNoneを見てみると、Noneは何も存在しないことを示しています。

    具体的なコードで見てみましょう。

    コード
    

    1 a = [1]

    2 a.pop()

    3 b = None

    4 print(a)

    5 print(type(a))

    6 print(b)

    7 print(type(b))

    アウトプット
    []
    

    <class 'list'>

    None

    <class 'NoneType'>

    コードの解説
    

    1 変数aに、[1]という一つのデータが入っているリストを代入しています。

    2 pop関数で、リストの中の1というデータを削除しました。

    3 変数bに、Noneというデータを代入しています。

    4,5 変数aの中身と、aの型を出力しています。

    6,7 変数bの中身と、bの型を出力しています。

    上記の通り、空のリストとNoneは別のタイプであることが分かります。

    つまり、もともと何も入っていないデータなのか、それとも何かの型だけど何もデータが入っていないのか、という区別のために使うことができるのです。

    Noneはなにも無い状態。というイメージを持つと分かりやすいのではないかと思います。

    True・False・Noneのまとめ

    (1) 基本的に、False以外は全てTrueになる

    (2) Noneは何もない状態。空のデータはFalseであって、Noneではない

    True・False・Noneを学んだ後は

    True・Falseを一番使うIf・else・elif文について学んでいきましょう。