Python における bool 型は、int 型のサブクラスらしい。
ブール値 (bool)
真偽値の False と True を表します。False と True を表す 2 つのオブジェクトのみがブール値オブジェクトです。ブール型は整数型の派生型であり、ほとんどの状況でそれぞれ 0 と 1 のように振る舞いますが、例外として文字列に変換されたときはそれぞれ "False" および "True" という文字列が返されます。
だから bool 型どうしで四則演算ができる。
>>> True + True 2 >>> True + False 1 >>> True - True 0 >>> True * False 0
bool 型と int 型でも計算できる。
>>> 1 + True 2 >>> 5 * True 5 >>> True * 5 5
だいぶ奇妙な感じになって来た。
割り算をするともはや int 型ですらなくなる。
>>> True /2 0.5
ここから ==
を使って遊びたいが、混乱するかもしれないので一つだけポイントを復習しておく。
普段 ==
は if 文のところで書く。
>>> if 3 % 2 == 1: ... print("yeah") ... yeah
左辺ないし右辺がそれ単体で True と等価なオブジェクトの場合は右辺(あるいは左辺)を省略することもある。
>>> if 3 % 2: ... print("yeah") ... yeah
str 型は、空でないものは全部 True と等価なのでこうなる。
>>> if "hoge": ... print("yeah") ... yeah
こうではない。
>>> if "hoge" == True: ... print("yeah") ... >>>
こう言うことでもない。
>>> if "hoge" is True: ... print("yeah") ... <stdin>:1: SyntaxWarning: "is" with a literal. Did you mean "=="?
こうだったら良い。(ダサいので誰もやらないけど)
>>> if bool("hoge") == True: ... print("yeah") ... yeah
要するにこういうこと。
>>> "hoge" == True False >>> bool("hoge") == True True
以上を踏まえた上で、 True や False を使って変な式を作り、だり〜(ダルい)考察勢みたいな不必要な解釈を加えたい。
真実について
1. 真実に嘘を付け加えても真実
>>> True + False == True True
2. 真実から真実を取り去るともはや嘘
>>> True - True == False True
3. 真実に真実を付け加えると、嘘。(真実はいつも一つ!?)
>>> True + True == True False
4. 真実を半分にすると、嘘。
>>> True / 2 == True False
5. 真実を嘘で分割すると世界が崩壊する
>>> True / False Traceback (most recent call last): File "<stdin>", line 1, in <module> ZeroDivisionError: division by zero
6. 真実の肩に嘘を乗っけても真実
>>> True ** False == True True
7. 嘘の肩に嘘を乗っけてると、もはや真実
>>> False ** False == True True
まとめ
つまんね〜〜〜〜〜〜〜〜