2016-05-08 9 views
5

कौन सा बेहतर है? (और क्यों?)गलत की जांच करने का सही तरीका क्या है?

if somevalue == False: 

या

if somevalue is False: 

अगर somevalue आपका जवाब परिवर्तन एक स्ट्रिंग है?

+2

रास्ता भी होमवर्कवर्क लगता है। – firegurafiku

+5

मैं लिखूंगा 'अगर कुछ नहीं:' हालांकि गैर बूलियन प्रकारों के लिए यह अलग-अलग व्यवहार करेगा: 'अगर नहीं ":' कोड चलाएगा लेकिन 'अगर" "== गलत:' नहीं होगा। – rodrigo

+0

आमतौर पर आप पाइथन में ऑब्जेक्ट की तुलना गलत रूप से 'गलत'/'True' से नहीं करते हैं। बस कुछ करें: 'या' कुछ नहीं: ' –

उत्तर

4

यह बल्कि क्या somevalue हो सकता है पर निर्भर करता है:

if isinstance(somevalue, bool) and not somevalue 

इस False एक सिंगलटन किया जा रहा है पर निर्भर नहीं करता: somevalue कुछ भी आप की जांच कर सकता है कि यह एक बूलियन और not है हो सकता है। यह हमेशा एक सिंगलटन है, तो आप भी कर सकते हैं:

if somevalue is False 

लेकिन अजगर की PEP8 कहा गया है आप वर्ग के बारे में अगर यह परवाह नहीं करनी चाहिए और सिर्फ का उपयोग करें:

if not somevalue 

इस मूल्यांकन करेंगे यदि somevalue "गलत" है। Python documentation on Truth value testing देखें।

PEP8 कहता है:

सही है या गलत का उपयोग कर == को बूलियन मूल्यों की तुलना करें।

और देता है इन उदाहरणों:

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 यह जांच रहा है कि दो वस्तुएं सचमुच समान वस्तु हैं। == समानता की जांच कर रहा है।

यदि आप यह जांचना चाहते हैं कि कुछ गलत है, उदा। शून्य, True के विपरीत, if something == False करें।

टिप्पणियों में उल्लिखित अनुसार, आप निश्चित रूप से if not something कर सकते हैं, यह पठनीयता को काफी सुधार सकता है, लेकिन यह if bool(something) == False जैसा ही है।

मैं समानता पसंद करते हैं, क्योंकि, मेरे मन, को True और Falseसच या झूठी जा रहा है के संदर्भ में 1 और 0 बस की तरह व्यवहार करना चाहिए। उदाहरण के लिए ("a" == "a") == FalseFalse का मूल्यांकन करता है जैसे ("a" == "a") == 0 करता है।

+1

मिमी, 'अगर कुछ नहीं'? – vaultah

+0

@ vaultah, हाँ, लेकिन यदि प्रश्न जैसा कहा गया है: या तो '==' या तो 'है 'चुनें, तो' == ' – ForceBru

+1

* का उपयोग करना बेहतर है, लेकिन यह' if == गलत * *, नहीं है। यह 'अगर बूल (कुछ) == झूठा' जैसा ही है। – vaultah

संबंधित मुद्दे