Pythonの判断は空のインスタンス共有です

実際の作業では、必然的にnull値を処理する必要があります。多くの初心者は、次のコードを作成すると思います。

ifaisNone:
dosomething.else:
dotheotherthing.

これは良さそうに見えますが、実際には問題が発生します。一般的に、Pythonは次の状況をnull値として扱います。

None
False
0,0.0,0 L
'',(),[],{}

Noneの特別な機能は、特定のデータ構造の値0でもnull値でもないことです。それ自体がnull値オブジェクトです。そのタイプはNoneTypeであり、シングルに従います

サンプルモード、つまり、同じ名前名のすべてのNoneは、基本的に同じnull値オブジェクトです。

id(None)1795884240
 None==0
False
 None==''
False
 a=None
 id(a)1795884240
 a==None
True

上記の判断は明らかに私たちの期待を満たしていません。aがNoneとして表示されている場合にのみ、a == NoneはTrueです。

では、Pythonでより一般化されたNone値の判断を行うにはどうすればよいでしょうか。

 a=''#これは例として空の文字列のみです、他の空の値も適用可能です
 ifa:...print'aisnotempty'...else:...print'aisaemptystring''aisaemptystring.'

aが希望の結果に達した場合の判定方法がわかりますが、aの場合の判定方法はどのようなプロセスですか?

aが最初にaの__nonzero __()を呼び出して、aが空かどうかを判断し、True / Falseを返す場合。オブジェクトが__nonzero __()を定義していない場合は、その__len __()を呼び出します。

オブジェクトが上記の2つのメソッドを定義していない場合、aが常にTrueになる場合の結果を判断します(ここで、戻り値は0は空を表します)。

次に、上記のステートメントを確認します。

classA(object):...def__nonzero__(self):...print'runningonthe__nonzero__'...returnTrue
 classB(object):...def__len__(self):...print'runningonthe__len__'...returnFalse
 a,b=A(),B()
 ifa:...print'Yep'...else:...print'Nop'
runningonthe__nonzero__
Yep
 ifb:...print'Yep'...else:...print'Nop'
runningonthe__len__
Nop

コンテンツの拡張:

python関数が空を返すかどうかを判断する方法

ここであなたが何を意味するのかわかりませんが、なしまたは「

私はあなたにすべてについて話します:

Noneは空のオブジェクトです。つまり、何もありません。

そして、 "は文字列オブジェクトであり、空の文字列を表します

戻り値がNoneの場合、Noneの場合に使用します:判断

``を返す場合は、len( '')== 0の場合に使用します:判断

ネチズンの共有:

条件と同じようにifの後に関数を直接ベイすることができます。空の場合、判断結果daoはfalseです。次に例を示します。

deftest():
returnNone

iftest():
printTrue
else:
printFalse

これまでのところ、python判定の例の共有に関するこの記事が空です。pythonが空であると判断する方法に関するその他の関連コンテンツについては、ZaLou.Cnの以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後さらにサポートされることを願っています。 ZaLou.Cn!

Recommended Posts

Pythonの判断は空のインスタンス共有です
Python 3.9が登場!
Pythonに付属しているIDEはどこにありますか
なぜpythonが人気なのか
Pythonは短いクロール音楽です
pythonは解釈された言語ですか
Pythonは短世界の流行マップです
Pythonは短い_SVMテストです
pythonコードは大文字と小文字を区別しますか
pythonのイントロスペクションとは何ですか
pythonのオブジェクト指向とは何ですか
Python変数スコープとは