01 / 06
「まだ何も無い」を表す値
プログラムを書いていると、「まだ値が決まっていない」という状態を表したくなることがある。
0 や ""(空の文字)で代用してもいいけれど、「0円」と「値段が未定」は別のことだよね。この違いを表すために、Pythonには None(ノン)という特別な値が用意されているんだ。
nedan = Noneprint(nedan)実行結果
None
文法のきほん
INPUT · スライド
01 / 06
プログラムを書いていると、「まだ値が決まっていない」という状態を表したくなることがある。
0 や ""(空の文字)で代用してもいいけれど、「0円」と「値段が未定」は別のことだよね。この違いを表すために、Pythonには None(ノン)という特別な値が用意されているんだ。
nedan = Noneprint(nedan)実行結果
None
02 / 06
None は 0 でも False でも空の文字でもない、それ自体が1つの値だよ。型も専用のものになる。
先頭が大文字なのは True や False と同じ。none と小文字で書くと NameError になるよ。
print(type(None))print(None == 0)実行結果
<class 'NoneType'> False
03 / 06
None かどうかを調べるときは、== ではなく is None と書くのがPythonの慣習だよ。
== None でも動くけれど、実際のPythonのコードでは is None がほぼ必ず使われている。読めるようにしておこう。
nedan = Noneif nedan is None: print("まだきまっていません")実行結果
まだきまっていません
04 / 06
実は if には、比較の結果だけでなくどんな値でも渡せる。Pythonがそれを True か False に読みかえてくれるんだ。
False として扱われるのは、「空っぽ」や「ゼロ」を表すものたちだよ。
0""(空の文字)NoneFalseそれ以外はぜんぶ True になる。
kazu = 0if kazu: print("あり")else: print("なし")実行結果
なし
05 / 06
この仕組みのおかげで、if namae != "": と書くかわりに if namae: と書けるよ。
短くて読みやすいので、Pythonのコードでは本当によく見かける形。「中身があるなら」と読めばいいよ。
namae = "あおい"if namae: print(f"こんにちは、{namae}さん")実行結果
こんにちは、あおいさん
06 / 06
ただし気をつけて。0 も None も、どちらも False として扱われる。
「値が無い」のと「値が0である」を区別したいときは、if nedan: では足りない。if nedan is None: とはっきり書く必要があるよ。
これは実際の開発でもよく踏む落とし穴。短く書けることと、正しく書けることは別だと覚えておこう。
nedan = 0if nedan is None: print("みてい")else: print("むりょう")実行結果
むりょう