Python にはNone
、特定の状況でかなり奇妙な動作をするシングルトンがあります。
>>> a = None
>>> type(a)
<type 'NoneType'>
>>> isinstance(a,None)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: isinstance() arg 2 must be a class, type, or tuple of classes and types
まず最初に、これはタイプ<type 'NoneType'>
でNone
はありませんが、それはタイプNoneType
です。しかし、 を実行するisinstance(a,NoneType)
と、次のエラーが返されます。NameError: name 'NoneType' is not defined
ここで、入力のデフォルトが に設定された関数がNone
あり、チェックする必要がある場合は、次のようにします。
if variable is None:
#do something
else:
#do something
代わりに次のことができない理由は何ですか:
if isinstance(variable,None): #or NoneType
#do something
else:
#do something
これをよりよく理解できるように、詳細な説明を探しているだけです
編集:良いアプリケーション
を含むさまざまなタイプのisinstance
場合に何かを実行できるように使用したいとしましょう。variable
None
if isinstance(variable,(None,str,float)):
#do something