魂の生命の領域

AWS とか Python とか本読んだ感想とか哲学とか書きます

Python の bool 型でインチキ哲学を構成する

Python における bool 型は、int 型のサブクラスらしい。

ブール値 (bool)

真偽値の False と True を表します。False と True を表す 2 つのオブジェクトのみがブール値オブジェクトです。ブール型は整数型の派生型であり、ほとんどの状況でそれぞれ 0 と 1 のように振る舞いますが、例外として文字列に変換されたときはそれぞれ "False" および "True" という文字列が返されます。

docs.python.org

だから 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

まとめ

つまんね〜〜〜〜〜〜〜〜