other = s or "some default value"
ठीक है, यह स्पष्ट किया जाना चाहिए कि or
ऑपरेटर कैसे काम करता है। यह एक बूलियन ऑपरेटर है, इसलिए यह एक बुलियन संदर्भ में काम करता है। यदि मूल्य बुलियन नहीं हैं, तो वे ऑपरेटर के प्रयोजनों के लिए बूलियन में परिवर्तित हो जाते हैं।
ध्यान दें कि or
ऑपरेटर केवल True
या False
वापस नहीं लौटाता है। इसके बजाए, यह पहला ऑपरेंड लौटाता है यदि पहला ऑपरेंड सत्य का मूल्यांकन करता है, और यदि पहला ऑपरेंड झूठा मूल्यांकन करता है तो यह दूसरा ऑपरेंड देता है।
इस मामले में, अभिव्यक्ति x or y
x
देता है यदि यह True
है या बूलियन में परिवर्तित होने पर सत्य का मूल्यांकन करता है। अन्यथा, यह y
देता है। ज्यादातर मामलों के लिए, यह C♯ के अशक्त-कोलेसिंग ऑपरेटर की बहुत ही उद्देश्य के लिए काम करेंगे, लेकिन ध्यान रखें:
42 or "something" # returns 42
0 or "something" # returns "something"
None or "something" # returns "something"
False or "something" # returns "something"
"" or "something" # returns "something"
आप का उपयोग करते हैं अपने चर s
कुछ है कि या तो के लिए एक संदर्भ है धारण करने के लिए एक वर्ग या None
का उदाहरण (जब तक आपकी कक्षा __nonzero__()
और __len__()
सदस्यों को परिभाषित नहीं करती है), यह समान अर्थशास्त्र का उपयोग नल-कोलेसिंग ऑपरेटर के रूप में करने के लिए सुरक्षित है।
वास्तव में, यह पाइथन के दुष्प्रभाव के लिए भी उपयोगी हो सकता है। चूंकि आप जानते हैं कि मूल्य क्या गलत हैं, आप इसका उपयोग None
विशेष रूप से (उदाहरण के लिए एक त्रुटि ऑब्जेक्ट) का उपयोग किये बिना डिफ़ॉल्ट मान को ट्रिगर करने के लिए कर सकते हैं।
कुछ भाषाओं में इस व्यवहार को Elvis operator के रूप में जाना जाता है।
'??' ऑपरेटर को [पीईपी 505] (https://www.python.org/dev/peps/pep-0505/) के रूप में प्रस्तावित किया गया है। –