NoneType値を時々返すメソッドがあります。では、NoneTypeである変数に質問するにはどうすればよいですか?たとえば、ifメソッドを使用する必要があります
if not new:
new = '#'
私はそれが間違った方法であることを知っています。私が何を意味するのか理解していただければ幸いです。
NoneType値を時々返すメソッドがあります。では、NoneTypeである変数に質問するにはどうすればよいですか?たとえば、ifメソッドを使用する必要があります
if not new:
new = '#'
私はそれが間違った方法であることを知っています。私が何を意味するのか理解していただければ幸いです。
回答:
では、NoneTypeである変数に質問するにはどうすればよいですか?
isこのように演算子を使う
if variable is None:
なぜこれが機能するのですか?
以来Noneの唯一のシングルトンオブジェクトであるNoneTypePythonでは、我々が使用できるis変数が持っているかどうかを確認する作業をNoneその中かどうか。
isドキュメントからの引用、
事業者
isとis notオブジェクトのアイデンティティのためのテストは:x is y場合にのみ、真であるxとy同じオブジェクトです。x is not y逆の真理値を生成します。
のインスタンスは1つしか存在できないためNone、isを確認する方法としてが推奨されNoneます。
馬の口から聞く
Pythonのコーディングスタイルガイドラインの引用-PEP-008(Guido自身が共同で定義)、
のようなシングルトンとの比較
Noneは常にisoris 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))))。それは単なる個人的な好みですか、それとも私が知らないという警告がありますか?
type2.次にそれを呼び出す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")