NoneオブジェクトについてとTrueと1は論理値として同じか?

Python
スポンサーリンク

Python学習しています。学習したことを書いていきます。

スポンサーリンク

Noneオブジェクトと0

Noneオブジェクト

Noneはオブジェクト。オブジェクトなのでメモリ上に存在する。Noneのアドレスを表示するようにコードを書くと 

print(id(None)) 

で、アドレスが表示される。

メモリ上には存在するが、ifの後に置いて判定すると「偽」と判定される。

if None:
    print("真です")
else:
    print("偽です")

0

0もメモリ上のどこかにある。print(id(0)) でアドレスが表示される。
0もifの後に置いて判定すると「偽」と判定される。

if 0:
    print("0は真です")
else:
    print("0は偽です")

Noneも0も「偽」と判定されるからといっても同じアドレスにはない。

print(id(None),id(0))

結果:140736791264472 369737427216

is演算子を使って同じアドレスにあるか調べると

if None is 0:
    print("Noneと0は同じアドレスにあります")
else:
    print("Noneと0は同じアドレスにはありません")

同じアドレスにはないことがわかる。

スポンサーリンク

Trueと1は論理値として同じか?

if True == 1:
    print("真です")
else:
    print("偽です")

を実行すると「真です」と表示される。同じ。Trueと1のアドレスは同じか?

print(id(True),id(1))

結果:140736791214184 8821106992 ちがう。 

違うオブジェクトであることがわかった。
Falseと0についても同様のことをすると同じ結果になる。


独学プログラマー Python言語の基本から仕事のやり方まで

pythonの体系的な学習に


新・明解Python入門