私は時々NoneType値を返すメソッドがあります。それでは、どのように私はNoneTypeである変数に質問することができますか?私は if methodを使う必要があります、例えば
if not new:
new = '#'
それが間違ったやり方であることを私は知っています、そして私があなたが私の言っていることを理解することを願っています。
それでは、どのように私はNoneTypeである変数に質問することができますか?
このようにis
演算子を使用してください。
if variable is None:
なぜこれが機能するのですか?
Pythonでは None
は NoneType
の唯一のシングルトンオブジェクトなので、is
演算子を使用して、変数にNone
が含まれているかどうかを確認できます。
is
docs からの引用
演算子
is
とis not
は、オブジェクトの同一性をテストします。x is y
は、x
とy
が同じオブジェクトである場合に限り、trueです。x is not y
は、逆の真理値を返します。
None
のインスタンスは1つしか存在できないため、is
はNone
をチェックするのに適した方法です。
馬の口からそれを聞く
引用符 - Pythonのコーディングスタイルガイドライン - PEP-008 (Guido自身によって共同定義された)、
None
)のようなシングルトンとの比較は、常にis
またはis not
、決して等価演算子ではないで行われるべきです。
if variable is None:
...
if variable is not None:
...
Alex Hallの答え :のようにisinstance
でもできます。
>>> NoneType = type(None)
>>> x = None
>>> type(x) == NoneType
True
>>> isinstance(x, NoneType)
True
isinstance
も直感的ですが、次の行を必要とするという複雑な問題があります。
NoneType = type(None)
これはint
やfloat
のような型には必要ありません。
Aaron Hillのコマンドで指摘されているように、
NoneType
をサブクラス化することはできず、またNone
はシングルトンなので、isinstance
をNone
の検出に使用しないでください。代わりに、受け入れられている回答のとおりにis None
またはis not None
を使用してください。
元の回答:
しかし最も簡単な方法は、 cardamomの答え に追加の行を追加しないことです。isinstance(x, type(None))
それでは、どのように私はNoneTypeである変数に質問することができますか? ifメソッドを使う必要があります
isinstance()
を使用することは、is
-ステートメント内にif
を必要としません。
if isinstance(x, type(None)):
#do stuff
追加情報
documentation に記載されているように、1つのisinstance()
ステートメントで複数の型をチェックすることもできます。タプルとしてタイプを書くだけです。
isinstance(x, (type(None), bytes))
Python 2.7:
x = None
isinstance(x, type(None))
または
isinstance(None, type(None))
==>真
これが質問に答えるかどうかわからない。しかし、これを理解するのにしばらく時間がかかったことを私は知っています。私はウェブサイトをループしていました、そして、突然作家の名前はもうそこにありませんでした。チェックステートメントが必要でした。
if type(author) == type(None):
my if body
else:
my else body
この場合、authorは任意の変数にすることができ、None
はあなたがチェックしている任意の型にすることができます。
この例があなたに役立つことを願っています)
print(type(None) # NoneType
だから、あなたは変数名の型をチェックすることができます
#Example
name = 12 # name = None
if type(name) != type(None):
print(name)
else:
print("Can't find name")