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

投稿者:プロスタ編集部

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

おすすめスクール

全国30校舎で展開されるヒューマンアカデミーのWeb講座は修了者数4万人超、講師とカリキュラムの満足度がどちらも9割を超えています。就職や転職に必要なレベルの実務スキルを身に付けられます。

WebCampは、一ヶ月の短期集中でWebデザイン、プログラミングスキルを習得するスクールです。学習効果の高い反転授業(自主学習でインプット、講義でアウトプット)を採用し、年間1000名を輩出しています。

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

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

あわせて読みたい

関連記事

イチ押しランキング

1リナックスアカデミー

リナックスアカデミー

2システムアーキテクチュアナレッジ

システムアーキテクチュアナレッジ

3WEB塾

WEB塾

メールマガジン

ページ上部へ戻る