Python: 「if 0:」はTrueなのかFalseなのか

Pythonのif文で条件式の部分を数値の「0」として「if 0:」と記述した場合、 TrueになるのかFalseになるのかは、 結論から言うと「False」です。

if 0:
	print(True)
else:
	print(False)
実行結果
False

多くの場合、条件式の結果は真偽値(True/False)になりますが、 上のコードのように 真偽値にならない数値や文字列もTrue、Falseで判定することができます。

Pythonでは真偽値にならない数値や文字列に関してTrue、False 判定をする場合、 「数値の0」と「文字列の空の値」は False と判定され、 それ以外は True と判定されます。 表にすると次の通りです。

データ型TrueFalse
数値0以外0
文字列空の値以外空の値(None)

条件判断時に「数値の0と空の値は False として判定される」 ことを認識しておいてください。

次のコードで変数「a」に具体的な値をいろいろ代入して、 どのように判定されるのかを試した結果が下の表です。 最低限押さえておきたいのは、0、None、''、""、[]空のリスト、{}空の辞書、()空のタプルが Falseになることです。

a = 0

if a:
	print(True)
else:
	print(False)
条件式と判定結果
「a」の値True / False
0False
0.0False
1True
NoneFlase
""(空の文字列)False
''(空の文字列)False
" "(スペース)True
"hoge"True
"0"True
"\n"True
"\t"True
[](空のリスト)False
{}(空の辞書)False
()(空のタプル)False
Python