文法のきほん

INPUT · スライド

値が無いということ

01 / 06

「まだ何も無い」を表す値

プログラムを書いていると、「まだ値が決まっていない」という状態を表したくなることがある。

0""(空の文字)で代用してもいいけれど、「0円」と「値段が未定」は別のことだよね。この違いを表すために、Pythonには None(ノン)という特別な値が用意されているんだ。

nedan = Noneprint(nedan)

実行結果

None

02 / 06

None は他のどれとも違う

None0 でも False でも空の文字でもない、それ自体が1つの値だよ。型も専用のものになる。

先頭が大文字なのは TrueFalse と同じ。none と小文字で書くと NameError になるよ。

print(type(None))print(None == 0)

実行結果

<class 'NoneType'>
False

03 / 06

None かどうかは is で調べる

None かどうかを調べるときは、== ではなく is None と書くのがPythonの慣習だよ。

== None でも動くけれど、実際のPythonのコードでは is None がほぼ必ず使われている。読めるようにしておこう

nedan = Noneif nedan is None:    print("まだきまっていません")

実行結果

まだきまっていません

04 / 06

条件に値をそのまま渡せる

実は if には、比較の結果だけでなくどんな値でも渡せる。Pythonがそれを TrueFalse に読みかえてくれるんだ。

False として扱われるのは、「空っぽ」や「ゼロ」を表すものたちだよ。

  • 0
  • ""(空の文字)
  • None
  • False

それ以外はぜんぶ True になる。

kazu = 0if kazu:    print("あり")else:    print("なし")

実行結果

なし

05 / 06

空でないかを短く書く

この仕組みのおかげで、if namae != "": と書くかわりに if namae: と書けるよ。

短くて読みやすいので、Pythonのコードでは本当によく見かける形。「中身があるなら」と読めばいいよ。

namae = "あおい"if namae:    print(f"こんにちは、{namae}さん")

実行結果

こんにちは、あおいさん

06 / 06

0 と None を混同しない

ただし気をつけて。0None も、どちらも False として扱われる

「値が無い」のと「値が0である」を区別したいときは、if nedan: では足りない。if nedan is None: とはっきり書く必要があるよ。

これは実際の開発でもよく踏む落とし穴。短く書けることと、正しく書けることは別だと覚えておこう。

nedan = 0if nedan is None:    print("みてい")else:    print("むりょう")

実行結果

むりょう