आप or
ऑपरेटर के व्यवहार से उलझन में हैं; यह पहली अभिव्यक्ति देता है कि केवल अगर यह सत्य मान है; न 0
है और न ही False
सच है तो दूसरा मान दिया जाता है:
>>> 0 or 'bar'
'bar'
>>> False or 'foo'
'foo'
कि संख्यात्मक 0, एक खाली कंटेनर, None
या False
सच माना जाता है (कस्टम कक्षाएं एक __bool__
विधि को लागू करने से है कि बदल सकते हैं (नहीं है कोई भी मान अजगर 3), __nonzero__
(अजगर 2) या __len__
(लंबाई 0 खाली है)
दूसरी अभिव्यक्ति भी मूल्यांकन नहीं किया जाता है, तो पहले True
है:।
>>> True or 1/0
True
1/0
अभिव्यक्ति ZeroDivision
अपवाद उठाएगी, लेकिन इसका मूल्यांकन पायथन द्वारा भी नहीं किया जाता है।
यह boolean operators documentation में दर्ज है:
अभिव्यक्ति x or y
पहले का मूल्यांकन करता है x
; यदि x
सत्य है, तो इसका मूल्य वापस कर दिया गया है; अन्यथा, y
का मूल्यांकन किया गया है और परिणामी मूल्य वापस कर दिया गया है।
इसी तरह, and
पहली अभिव्यक्ति देता है यदि यह False
है, अन्यथा दूसरी अभिव्यक्ति वापस आती है।
स्रोत
2013-11-04 22:18:29
ध्यान दें कि ये दोनों मान "झूठी" हैं; यानी, वे दोनों एक कथन में 'गलत' का मूल्यांकन करते हैं। –