2009-09-21 3 views
9

में बूलियन अभिव्यक्तियों का मूल्यांकन पायथन में वस्तुओं का क्या वास्तविक मूल्य मूल्यांकन करता है?पायथन

संबंधित प्रश्न

  • Boolean Value of Objects in Python: मेडर पद

    साथ सभी डुप्लिकेट जानकारी निकाला गया अजगर में कस्टम वस्तुओं के लिए: जिस तरह से यह मूल्यांकन किया जाता है

उत्तर

18

किसी भी वस्तु एक अगर या जब हालत में या नीचे बूलियन आपरेशन के संकार्य के रूप में उपयोग के लिए, सच मूल्य के लिए परीक्षण किया जा सकता है। निम्न मान झूठा माना जाता है:

  • कोई नहीं

  • झूठी

  • किसी भी सांख्यिक प्रकार का शून्य, उदाहरण के लिए, 0, 0L, 0.0, 0j

  • कोई खाली अनुक्रम, उदाहरण के लिए, '', (), []

  • कोई खाली मैपिंग, उदाहरण के लिए, {}

  • उपयोगकर्ता परिभाषित वर्गों के उदाहरण, वर्ग एक __nonzero__() या __len__() विधि, जब कि विधि रिटर्न पूर्णांक शून्य या bool मूल्य False को परिभाषित करता है, तो।

सभी अन्य मूल्यों सच माना जाता है - इतने प्रकार की वस्तुओं हमेशा सच नहीं है। संचालन और अंतर्निहित फ़ंक्शंस जिनमें बूलियन परिणाम होता है, हमेशा गलत या 1 या True को गलत के लिए 0 या False लौटाते हैं, जब तक कि अन्यथा न कहा गया हो। (महत्वपूर्ण अपवाद: बूलियन ऑपरेशंस "या" और "और" हमेशा अपने ऑपरेंड में से एक लौटते हैं।)

https://docs.python.org/2/library/stdtypes.html#truth-value-testing

और के रूप में उल्लेख किया है, आप अशून्य संशोधित करके कस्टम वस्तुओं के साथ ओवरराइड कर सकते हैं।

+5

__nonzero__ को लागू करने से बूलियन मूल्यांकन के लिए सही/गलत लौट सकते हैं बस ध्यान दें कि अजगर 3.0 '__bool__' बजाय ओवरराइड करने के लिए – Casebash

+7

डॉक्स आप बोली अनिश्चित (या अधूरा) कर रहे हैं की जरूरत है में की जरूरत है; उदाहरण के लिए, सेट न तो अनुक्रम और न ही मैपिंग हैं, फिर भी, खाली होने पर, वे भी झूठे हैं। मैं उन दो लाइनों (सेट के मामले को कवर करने) को "किसी भी खाली ** कंटेनर **" में पतन कर दूंगा। –

8

अद्यतन अधिभावी के बारे में चर्चा < 3.0 __nonzero__ यह बदलने के लिए कि यह मूल्यांकन कैसे किया जाता है ईडी। पायथन 3.0 में यह __bool__ (Reference ई-सैटिस द्वारा)

यह समझना महत्वपूर्ण है कि मूल्यांकन का क्या अर्थ है। एक अर्थ यह है कि जब कोई ऑब्जेक्ट स्पष्ट रूप से एक बूल को कास्टिंग कर रहा है या इसके स्थान से निहित रूप से डाला गया है (यदि एक या लूप में)।

दूसरा == evalutation है। 1 == सही, 0 == गलत, कुछ और == के बराबर नहीं है।

>>> None==False 
False 
>>> 1==True 
True 
>>> 0==False 
True 
>>> 2==False 
False 
>>> 2==True 
False 

अंत में, केवल सत्य या गलत स्वयं ही हैं।

+0

कस्टम वस्तुओं – dcrosta