NoneType値を時々返すメソッドがあります。では、NoneTypeである変数に質問するにはどうすればよいですか?たとえば、ifメソッドを使用する必要があります
if not new:
new = '#'
私はそれが間違った方法であることを知っています。私が何を意味するのか理解していただければ幸いです。
NoneType値を時々返すメソッドがあります。では、NoneTypeである変数に質問するにはどうすればよいですか?たとえば、ifメソッドを使用する必要があります
if not new:
new = '#'
私はそれが間違った方法であることを知っています。私が何を意味するのか理解していただければ幸いです。
回答:
では、NoneTypeである変数に質問するにはどうすればよいですか?
is
このように演算子を使う
if variable is None:
なぜこれが機能するのですか?
以来None
の唯一のシングルトンオブジェクトであるNoneType
Pythonでは、我々が使用できるis
変数が持っているかどうかを確認する作業をNone
その中かどうか。
is
ドキュメントからの引用、
事業者
is
とis not
オブジェクトのアイデンティティのためのテストは:x is y
場合にのみ、真であるx
とy
同じオブジェクトです。x is not y
逆の真理値を生成します。
のインスタンスは1つしか存在できないためNone
、is
を確認する方法としてが推奨されNone
ます。
馬の口から聞く
Pythonのコーディングスタイルガイドラインの引用-PEP-008(Guido自身が共同で定義)、
のようなシングルトンとの比較
None
は常にis
oris not
で行う必要があり、等値演算子は使用しないでください。
== None
とはis None
どう違いますか?
None
、どちらも同じ結果になります。
pandas
ことのために、私が使用-データフレームが存在しているtype(df) is type(None)
:避けるためにThe truth value of a DataFrame is ambiguous
アレックスホールの答えisinstance
に従っても行うことができます。
>>> NoneType = type(None)
>>> x = None
>>> type(x) == NoneType
True
>>> isinstance(x, NoneType)
True
isinstance
も直感的ですが、ラインを必要とするという複雑さがあります
NoneType = type(None)
int
およびのような型には必要ありませんfloat
。
NoneType
それ以来None
シングルトンで、isinstance
検出するために使用すべきではないNone
-受け入れ答えが言うように代わりにあなたが行う必要があり、使用is None
またはis not None
。
アーロン・ホールのコメントで指摘されているように:
あなたがサブクラス化することはできませんので、
NoneType
それ以来None
シングルトンで、isinstance
検出するために使用すべきではないNone
-受け入れ答えが言うように代わりにあなたが行う必要があり、使用is None
またはis not None
。
元の回答:
ただし、カルダモンの回答に加えて追加の行がない場合、最も簡単な方法はおそらく次のとおりです。
isinstance(x, type(None))
では、NoneTypeである変数に質問するにはどうすればよいですか?ifメソッドを使用する必要があります
を使用isinstance()
するis
場合、if
-statement 内は必要ありません。
if isinstance(x, type(None)):
#do stuff
追加情報また、ドキュメントに記載されているように、
1つのisinstance()
ステートメントで複数のタイプを確認することもできます。タイプをタプルとして書くだけです。
isinstance(x, (type(None), bytes))
NoneType
それ以来None
シングルトンで、isinstance
検出するために使用すべきではないNone
-受け入れ答えが言うように代わりにあなたが行う必要があり、使用is None
またはis not None
。
python 3.6.7
isinstance
すべきではないのですか?私はそれis
を優先する必要があることを理解していますが、インスタンスインスタンスフォームがより自然に感じられる場合があります(一度に複数の型をチェックするなどisinstance(x, (str, bool, int, type(None)))
)。それは単なる個人的な好みですか、それとも私が知らないという警告がありますか?
type
2.次にそれを呼び出す3.次にタイプを検索しますNone
- None
がシングルトンとキーワードの両方である場合。別の欠点:4.これは非常に非標準であり、人々があなたのコードを見ているときに眉をひそめるでしょう。x is None
より最適化されたチェックです。私はお勧めx is None or isinstance(x, (str, bool, int))
しますが、あまり一般的でない型についてそのような型チェックを行うときは、あなたが何をしているのかについてもっと考えることをお勧めします...
これが質問に答えるかどうかはわかりません。しかし、これを理解するにはしばらく時間がかかりました。私はWebサイトをループしていましたが、突然、著者の名前がなくなっていました。したがって、チェックステートメントが必要でした。
if type(author) == type(None):
my if body
else:
my else body
この場合、作成者は任意の変数にNone
することができ、チェックする任意のタイプにすることができます。
None
はシングルトンなので、type
検出には使用しないでください。None
代わりに、受け入れられた回答にあるようにして、is None
またはを使用する必要がありis not None
ます。
この例がお役に立てば幸いです)
print(type(None) # NoneType
だから、あなたは変数名のタイプをチェックすることができます
#Example
name = 12 # name = None
if type(name) != type(None):
print(name)
else:
print("Can't find name")