akuruhinode's blog

pythonやC#を中心に興味を持った内容について調べています。

Python None値とは

はじめに

ここでは、PythonのNone値とその用途について説明します。

None値とは

None値とはNoneTypeというデータ型の値で、値がないことを表します。
他のプログラミング言語におけるnullやnilに相当します。
ブール型のTrue、Falseと同じように大文字のNから始まります。

用途

値を返す必要がない関数ではNoneを返す

Pythonでは、すべての関数は必ず戻り値を持つ必要があります。しかしprint()のように、値を返す必要がない場合もあります。値を返す必要がない場合には、Noneを返します。

if None == print('こんにちは'):
    print('None')
こんにちは
None

補足

return Noneは自動で追加される

Pythonでは、return文がない関数定義には末尾にreturn Noneが追加されます。また、return文に値が指定されていない場合もretrun値がNoneとなります。

  • return文がない関数の戻り値
def sample():
    print('こんにちは')

if None == sample():
    print('None')
こんにちは
None
  • return値がない関数の戻り値
def sample():
    print('こんにちは')
    return

if None == sample():
    print('None')
こんにちは
None

利用例

エラーが発生したかどうかを判定する

例えば、以下のような割り勘を行う関数があったとします。

正常時には①の通り計算結果を返しますが、ゼロ除算の例外発生時には②のexcept節でエラーメッセージを表示した後、None値を返します(return文は省略していますが、return Noneが③の位置に追加されます)。
呼び出し元では④の通り戻り値がNoneかどうかを確認することで、正しい値が格納されているかどうかを判断することができます。

def split_the_bill(total_price, num):
    try:
        return int(total_price / num)  # ①
    except ZeroDivisionError:  # ②
        print("人数に0を指定することはできません")
    # ③


total_price = int(input('合計金額を入力してください:'))
num = int(input('人数を入力してください:'))

price = split_the_bill(total_price, num)
if price != None:  # ④
    print('ひとり' + str(price) + '円です')
合計金額を入力してください:2000
人数を入力してください:0
人数に0を指定することはできません