Python | Noneの判定に==ではなくisを使う理由

スポンサーリンク
Python
スポンサーリンク

Noneの判定に == ではなく isを使う理由

def func(arg1, arg2 = None):
    if arg2 is None:
        arg2 =[]
    arg2.append(arg1)
    print(arg2)

空リストを初期化したい場合はデフォルト値にNoneを使って判別するが、なぜNoneの判定に==ではなくisを使うのだろうか?

同値性と同一性

==はオブジェクト同士が同値性(等価)であるかどうかを判定する演算子で、isはオブジェクト同士が他のオブジェクトと重複することがない(同一性)ことを保持する。

同じ値かどうかを(同値性)判定する==

Pythonの==は同じ値かどうか(同値性)を判定する。

test_list_1 = [1, 2, 3]
test_list_2 = [1, 2, 3]

print(test_list_1 == test_list_2)
#True

==は同じ値で同じ順番(同値)だとTrueになる。

同一性を判定するis

Pythonのisは完全に同じものかどうかを判定する。

test_list_1 = [1, 2, 3]
test_list_2 = [1, 2, 3]

#オブジェクトの識別値を調べる
print(id(test_list_1))
#4394587336
print(id(test_list_2))
#4389782536

print(test_list_1 is test_list_2)
#False

print(test_list_1 is test_list1)
#True

Noneはどちらを使うのがいいのか?

オブジェクトがNoneであるのかを判定するには、値が確実にNoneなのか違うのかを判別するためするためisを使う。

 

ChatGPTを活用するためのプロンプトテクニック: 具体的で明確な質問で最適な回答を得る方法
『検証実験!!!』ChatGTP先生に儲かる株を教えてもらっちゃおう!!
ChatGPTの活用法とテクニック:初心者から中級者への完全ガイド
ChatGPT4を使ったビジネス例:AI技術で業界をリードする
効果的なChatGPT4の利用法:初心者向け総合ガイド

コメント