1ヶ月でWebデザイン・プログラミングスキルをオーダーメイドのカリキュラムで学べるスクール、それがWebCamp。

子供の想像力を伸ばしアイデアを形にする小学生向けプログラミング教室「プロスタキッズ」

【Python入門】if 文での真偽判定の仕方(TrueとNone)

【Python入門】
Pocket

python でif文を用いる事が多くありますが、そこで時折登場するNone について説明したいと思います。
if 文の中では、比較する条件があり、その条件文に対して 真 (True) もしくは偽 (False) であるかを判定しています。
None は False に近い概念ではあり、 ほとんどFalse = None と考えて差し支えないです。違いを言うとすれば、False は偽(0)であるという情報を持っているのに対して、None はそもそも「そこにデータが存在しない」ことを示す意味になります。
言葉面だけではわかりにくいかと思うので、具体例を出してみたいと思います。

True、Falseの取り扱い方

まずは、True と False について例を挙げます。

これは値 a が 1 よりも大きい場合は、”a > 1 ” を表示するプログラムになります。
if 文の中では、a > 1 の真偽を判定します。今、a = 3 としているので、判定は真(True)となります。要は判定文の中が真か偽なのかを判定しているだけですので以下のようにしても同じ事です。

このように判定文の中が True なのか False か、で決まっており、プログラム内では結局のところ、1と0の判定になります(True = 1、False = 0)

念のため True = 1、False = 0 であることを確認してみましょう。

このように Trueと False は1 とゼロに対応した関係になっている事がわかります。

Noneの取り扱い方

それでは本題の None について述べていきます。
同じように if 文判定しましょう。

ここまではどうやら False = None と考えていいようです。
次に足し算をしてみましょう。

むむ、ここでエラーが出てしまいました。
冒頭で述べましたが、None はそこにデータがないということを示すので、値という概念がありません。ですので、その値を足し合わせようとしても無理なことがわかりますね。

どういうときに None が登場するかというと、1例としては辞書型のオブジェクトを使うときが挙げられるでしょう。
辞書型のオブジェクトの例は以下の通りです。

red と apple を紐づける事で、red というキーワードで検索すると apple が出てくるようになります。ここでキーワード検索をするときは、get 関数が便利です。

それでは、この辞書に登録されていない単語(orange)で検索してみましょう。

ここで None が登場しました。これでお分かりかと思いますが、存在しないデータを示すときに None が使われます。False と意味合いが少し違うというのもおわかり頂けたと思います。

ちなみに test[“キーワード”] で直接アクセスするのも可能なのですが、存在しないキーワードを使ってしまうと以下のようにKeyErrorが出てしまいます。

こうなってしまうとせっかく書いたプログラムが途中で強制終了してしまいますので、終了を伴わない get関数を使うのがオススメです。

Noneを使った比較

None の論理比較を使うときは、「is」と「==」のどちらでも大丈夫です。

どちらでもちゃんと動いてますね。
ただ強いて言いますと、「is」 のほうが推奨されています。レアケースですが、「==」をエラーが出ることがあるそうです(著者はまだ遭遇した事がないですが)。
また実行スピードも 「is」のほうが早いと言われています。
検証のためにtimeitモジュールを使って処理時間を測定した結果を示します。

これの意味するところは、
「”1 == None” の比較を 10000000回行ったときにかかった所要時間を測定して、0.33秒でしたよ」
ということです。

同様に ”1 is None” を行ってみます。

この結果からわかるように is を使ったときの方が 0.19 / 0.33 〜 60 % ほど処理時間が早い事がわかります。

おわりに

None を使いこなせるようになると、存在しないデータへアクセスした際の例外処理などといった幅広いプログラミングができるようになります。
ぜひこの機会にマスターしておきたいですね。

【おすすめ記事】
Pythonを学びたい方は必見!おすすめスクールまとめ5選
【無料で使える】Pythonを勉強できる学習サイト7つ
Pythonの本・参考書の評判
【Python入門】モジュールを扱う際に重要な「if __name__ == ‘__main__’:」とは?
【Python入門】if文を使った条件分岐の書き方

投稿者:プロスタ編集部

  • このエントリーをはてなブックマークに追加
  • follow us in feedly

初心者がプログラミングで挫折しない学習方法を無料動画で公開中。オンラインに特化したプログラミングスクール「TechAcademy(テックアカデミー)」が解説。

この記事が気に入ったら
いいね!しよう

プロスタの最新情報をお届けします

あわせて読みたい

関連記事

ページ上部へ戻る