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文について学んでいきましょう。