PythonのNoneとnullについて

1506 ワード

多くのプログラミング言語ではnullという値があり,値として変数に与えられる.
Pythonにもありますが、Noneを使います.Noneを使う理由は,1)nullという単語が友好的ではなく,初心者には理解しにくいためである.2)対象言語はいずれもアルパカ命名法を用いる傾向があり,Noneはアルパカ命名法に適合している.
Pythonでは、Noneはオブジェクトです.
>>> print(type(None))


PythonのNone:1)を使用して、次のような関数またはメソッドが有効かどうかを判断できます.
# pseudocode
import MyDatabase

database_connection = None

# try to connect database
try:
    database_connection = MyDatabase(host, port, user_name, user_password)
except Exception as e:
    pass

if database_connection is None:
    print("fail to connect database")
else:
    print("database connected")

2)1つの変数がNoneであるかどうかをチェックする点で特に注意しなければならないのは、Pythonでは、一般的に1つの変数がNoneであるかどうかを判断するために2つの方法があり、1つはisであり、1つは==である.普段はどちらの方法でも正しい結果が得られるかもしれませんが、==方式はお勧めしません.クラスに組み込まれた関数であるためeq__,クラスを定義するときは、内蔵関数の書き換えが許可されているので、書き換えたためかもしれません.eq__,エラーが発生したと判断するには==方式を使用します.例:
# pseudocode
class MyClass:
    def __eq__(self, my_object):
    # No matter what, we return True, which will cause some errors
        return True

my_class = MyClass()

if my_class is None:
    print("my_class is None, using the is keyword")
else:
    print("my_class is not None, using the is keyword")

if my_class == None:
    print("my_class is None, using the == syntax")
else:
    print("my_class is not None, using the == syntax")

以上の疑似コードは、書き換えたので_eq__方法は、いつでもTrueに戻るようにするのでmy_classはもともとNoneではないが、Noneとされている.