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入門