【Python】よくわかるNone, True, Falseオブジェクトの解説【入門第17回】

96, 2019-08-10

目次

いろいろなオブジェクト

こんにちは、narupoです。

Pythonにはいろいろなオブジェクトがあります。
これらのオブジェクトは最初からPythonで利用できるオブジェクトです。

この記事では、

  • None

  • True

  • False

などのオブジェクトについて見ていきます。

Noneオブジェクト

何も存在しないことの証明。

無の境地

Pythonでは「何も存在しない」という状態を表すためにNoneオブジェクトを使います。

None

Noneと書くことでNoneオブジェクトにアクセスできます。
「何も存在しない」状態を表すオブジェクトなのに「アクセスできる」とはおもしろいですよね。

ちなみにこのNoneオブジェクトはprintで出力できます。

print(None)

出力結果は↓のようになります。

None

そのまんまですね。
謎が深まるオブジェクトです。

このオブジェクトは例えば変数に空の値を入れたい時とか、関数からの戻り値を空にしたい時とかに使われます。
たとえば変数catを作って、そのcatの内容を空っぽにしたい時、つまり、何も持っていない状態にしたい時は↓のようにします。

cat = None

これで変数catは「何も値を持たない」状態を表現できます。

ここで疑問になるのが、空文字列と何が違うのかというところです。

cat = None
dog = ''

↑の例で言う、変数catと変数dogの違いですね。
変数dogは空文字列なので、型としてはstr型です。
いっぽう変数catstr型ではなくNoneType型になります。
つまり、Noneは変数の型も含めて「存在しない状態」を表現するときに使われるわけですね。

このNoneオブジェクト、今はなかなか使い道がわからないと思いますが、Pythonの学習を進めていくと沢山見かけるようになっていきます。
今はなんとなーく覚えておきましょう。

真偽値

真偽値を表すオブジェクトでTrueFalseがあります。
これらのオブジェクトにはPythonでは最初からアクセスできます。

True
False

↑を出力してみると、

print(True)
print(False)

↓のようになります。

True
False

そのまんまですね。

Trueオブジェクト

真偽の「真(True)」を表すオブジェクトです。

真ってなに? どういうこと?

という話ですが、真というのは0以外の値を指す言葉です。
いっぽう偽というのは0を指している言葉です。

たとえば変数cat1という値が入っていたとき、この変数の持つ値は「真」になります。

cat = 1

1だけでなく、0以外のほかの数値が入ってても「真」です。

cat = 2
cat = 12.34
cat = -3

文字列も値としては0ではないので真になります。

cat = 'I am cat!'

ただ、空文字列は偽になります。

cat = ''

Trueオブジェクトの設計図はboolクラスですが、このboolクラスはintクラスをもとに作られています。
なので、整数と互換性があります。
Trueオブジェクトは数値との演算では1を表現します。
たとえば、↓のような演算では、

True + 0

結果は1になります。True1だからですね。

こんなの何に使うの?

という話ですが、真偽値のオブジェクトは主にif文や比較演算などでよく使われます。
比較演算については近いうちにやる予定なので、今はなんとなーく覚えておいてください。

Falseオブジェクト

真偽の「偽(False)」を表すオブジェクトがFalseです。

このFalseも設計図はboolクラスです。
整数と互換性があり、↓のような演算ではFalse0を表現します。

False + 1

↑の結果は1になります。False0だからですね。

boolクラスで遊ぼう

True, Falseの設計図であるboolクラスを使うと、いろいろな値を真偽値に変換できます。

たとえば整数1boolクラスに渡すと、

bool(1)

結果はTrueになります。
1以外の真の値を渡しても同じです。

bool(10)
bool(123.456)
bool(-3)

↑これらはみんなTrueになります。
文字列も同じです。

bool('パパはスーパーマン')

↑の結果はTrueになります。

いっぽう、0や空文字列を渡すと結果はFalseになります。

bool(0)
bool(0.0)
bool('')

↑の結果はどれもFalseです。

このように、boolクラスを使うと、Pythonが何の値を真に、または偽として見ているのかわかるようになります。
「これ真偽値ではTrueFalseどっちになるのかな?」
というときは、boolクラスで確認するといいでしょう。

数値に変換

True, Falseは、数値演算の文脈では暗黙的に整数に変換されますが、明示的に整数に変換することもできます。

int(True)
int(False)

↑の結果はそれぞれ1, 0となります。
もちろん実数に変換することも可能です。

float(True)
float(False)

↑の結果はそれぞれ1.0, 0.0になります。

文字列に変換

None, True, Falsestrクラスに渡すと文字列に変換することが出来ます。

str(None)
str(True)
str(False)

↑の結果はそれぞれNone, True, Falseになります。
空文字列はboolクラスに渡すとFalseに変換されるので、strクラスにFalseを渡せば空文字列に変換されるだろうと推測ができるんですが、そうではないので気をつけて下さい。

おわりに

None, True, FalseはPythonでは基本的なオブジェクトです。
プログラミングをしていると必ずと言っていいほど見かけるようになります。
今はまだ使い道がわからないと思いますが、なんとなく覚えておきましょう。

以上、次回に続きます。

また見てね

スポンサーリンク

スポンサーリンク

スポンサーリンク

スポンサーリンク