Python3 if文でのNoneとか数字とか””の挙動

こんにちは、kisseです。

この前、なんかの記事でリクエストのバリデーションを行ってる記事があったんですが、そこでif文周りの条件式で気になる部分があったので調査しました。



Noneオブジェクトの挙動

Noneオブジェクトが条件式に入ってる場合、どんな挙動を示すのでしょうか。
結論からいうと、NoneはFalseとして評価されるみたいです。

if None:
  print('これは表示されません。')
else:
  print('NoneはFalse扱いなので、これが表示されます。')

なるほど。
notをつけると、評価が反転するので、

if not None:
  print('notをつけるとTrueになるので表示されますね。')

となります。
(変数 is Noneみたいなのが推奨され)

条件式に数字を入れた場合

結論から言うと、整数の場合、0はFalse、あと全部Trueっぽいですね。

if 0:
  print('表示されません。')
else:
  print('0はFalseです。')

if 1000:
  print('正の整数はTrueです。')
else:
  print('表示されません。')

if -110:
  print('負の整数もTrueです。')
else:
  print('表示されません。')

なるほどですねー。
(あんまり使う機会なさそうだけど。)

条件式に空の文字列””をいれた時の挙動

これも結論から言いますと、“”はFalseです。

empty_str = ""
if empty_str:
  print('表示されません。')
else:
  print('empty_strは空の文字列です!')

てな具合で。
これはなかなかバリデーションとかに使いそうじゃないですか??



おわり

こんな感じで、パッと思いつく条件式での気になる挙動について調査をしてみましたー。

個人的には空の文字列がFalseなのには驚きましたね。

最後まで読んでいただきありがとうございます!

あわせて読みたい