前回の続きです。
次は何もないを表現するNone型というものを見ていきます。
そもそもNoneとは何かというと、何もないことを表現するための型です。他のプログラミング言語でいうとnullというものに相当します。
トイレットペーパーの図で説明をしますと、紙の量が0と言ったとき、この芯だけ残っている状態ですね。これが0です。
None というのは、真ん中の図にnullと書いてあるものです。トイレットペーパーの芯そのものも何もないよと言う状態。
そして右端の undefined というものがありますが、これはそもそも変数が存在してませんという状態です。
コードで表しますと、トイレットペーパーという変数が0、一番左の状態は
toilet_paper = 0
です。
真ん中の状態、toilet_paper という変数はあるけれど、何もない状態、これが none です。
toilet_paper = none
そしてトイレットペーパーという変数が定義されていない、プログラムに toilet_paper という変数がない状態が、右の undefine というイメージです。
そして、この none は0とか空文字とかそういうものとは違い、全く何もない状態を表します。
PyCharmのPythonコンソールで確認してみましょう。ある文字が同じかどうかというのを比較してみます。
'py' == 'py'
イコールをふたつ使うことによって、この左辺と右辺が同じかどうかを判定できます。このコードを実行すると、Trueとなります。同じかどうかの判定は == を使って判定できます。
以下の場合は、Falseになります。Pythonはすべての名前の大文字と小文字が区別されるからです。
'Py' == 'py'
ではNoneと0は同じでしょうか? これを比較してみます。
None == 0
結果はFalseで違うもの、という答えが返ってきます。
空文字(ダブルコーテーションの中に何も書かれていない)も試してみましょう。
None == ""
これもFalseとなります。
None同士も比較してみます。
None == None
とこれはTrueとなります。
このように、Noneは空文字でも0でもないことがわかります。「何もない」を表現するためのものです。
このNoneを使うことがあるのかというと、たまに使ったりします。たとえば、以下のように最初にtitleという変数だけ作っておいて、後でタイトルの中身を書き換える場合に使うことがあります。
title = None
もっとも、この場合、文字列が入るということが想像できますので、Noneではなくて空文字の方が適切かもしれません。が、このように一度Noneで空の変数を作っておくという使い方があります。
ちなみに先程PythonコンソールではNoneと何かを比較する場合、==を使いましたが、本当は==ではなくて、isというキーワードを使った方が良いとされています。
title is None
Pythonではこのように書くことが推奨されています。Noneと何かを比較する場合、isを使うのが望ましいとされていますので、頭の片隅に置いておいていただければと思います。