2016-05-08 5 views
5

どちらが良いですか? (その理由は?)Falseを確認する正しい方法は何ですか?

if somevalue == False: 

または

if somevalue is False: 

somevalueが文字列であれば、あなたの答えを変更していますか?

+2

音があまりにも習熟しています。 – firegurafiku

+5

'if not somevalue:'と書くのですが、ブール型でない場合は、 '' not '' ': '' '' '== False:' 'は実行しません。 – rodrigo

+0

一般に、Pythonではオブジェクトを 'False' /' True'と明示的に比較しません。ちょうど 'somevalue:'もしあれば 'somevalueなら'でも ' –

答えて

4

むしろことができるものsomevalueによって異なります。これはFalseがシングルトンであることに依存しない

if isinstance(somevalue, bool) and not somevalue 

somevalueあなたはそれがboolean型とnotだことを確認できた何もすることができれば。

if somevalue is False 

しかしのPythonのPEP8は、あなたがクラスについて、それならば気にしてばかり使用してはならない状態::

if not somevalue 

このそれは常にあなたも行うことができますシングルトンである場合somevalueが「偽」かどうかを評価します。 Python documentation on Truth value testingを参照してください。

PEP8状態:

は、TrueまたはFalseが==使用してブール値を比較しないでください。

及びこれらの例を示します:にあなたのケースに変換します

Yes: if greeting: 
No: if greeting == True: 
Worse: if greeting is True: 

Yes: if not greeting: 
No: if greeting == False: 
Worse: if greeting is False: 

は、各文字列が空の文字列''除い "truthy" と見なされることに注意してください。

3

isは、2つのオブジェクトが文字通りという同じオブジェクトであるかどうかを確認しています。 ==が一致を確認しています。

何かが間違っているかどうかを確認する場合は、次のようにします。 ゼロTrueとは反対に、if something == Falseとなります。

コメントに記載されているように、確かにif not somethingを行うことができますが、読みやすさはかなり向上するかもしれませんが、それはif bool(something) == Falseと同じです。

私の心に、TrueFalseであるという点にだけ10のように振る舞うべきです、ので、私は、平等を好みます。たとえば("a" == "a") == False("a" == "a") == 0のようにFalseと評価されます。

+1

mm、 'もしないなら'? – vaultah

+0

@vaultah、そうですが、もし質問が次のように書かれているなら、 '==' 'is ''のどちらかを選ぶと' == ' – ForceBru

+1

*を使うほうが良いですが、' if something == False' *、no。これは 'if bool(something)== False'と同じです。 – vaultah

関連する問題