के साथ मतभेद मेरी साइटों में से एक के लिए, मुझे यह जांचना होगा कि क्या कई वर्ग विशेषताओं को परिभाषित किया गया है और खाली नहीं है। अब तक, मैंने खुशी से if self.attr:
का उपयोग किया है, जो मेरे दिमाग में if self.attr is not None and self.attr is not '':
के लिए शॉर्टेंड है, या जो भी विशेषता का अपरिभाषित मान है।स्ट्रिंग्स और ऑपरेटर: सर्वोत्तम अभ्यास, +
यह ठीक काम करता है, लेकिन कई स्ट्रिंग विशेषताओं की जांच करते समय आश्चर्यजनक व्यवहार को उत्पन्न करता है। '' and ''
False
नहीं है (जैसा कि मैंने अपेक्षित था), लेकिन ''
।
यह सवाल पूछता है: क्या अन्य प्रकार हैं जिनके लिए and
ऑपरेटर bool
पर टाइपकास्ट को मजबूर नहीं करता है? मैं एक उदाहरण के साथ नहीं आ सकता हूं जहां व्यवहार में यह अंतर if
-clause (सभी के बाद, ''
अभी भी False
का मूल्यांकन करता है) के लिए वास्तविक भिन्न परिणाम का कारण बनता है, लेकिन मुझे लगता है कि किनारे के मामले हैं जो किनारे के मामलों में हो सकते हैं एक जाल बनो
आखिरकार, मैं जानना चाहूंगा कि क्या कोई जानता है कि इसे इस तरह क्यों लागू किया गया था? मैंने सोचा था कि पायथन के जेन केवल एक तरफ और एक तरफ प्रोत्साहित करते हैं, और +
ऑपरेटर स्ट्रिंग कॉन्सटेनेशन के लिए सहज ज्ञान युक्त तरीके से पहले से ही प्रतीत होता है।
क्या आप यहां कोड डाल सकते हैं? –
उत्तर इस सवाल को कवर करने के लिए प्रतीत नहीं होते हैं, प्रश्न के बूलियन भाग पर ध्यान केंद्रित करते हैं, लेकिन 'और' स्ट्रिंग concatenation कभी नहीं करता है; यह बिल्कुल '+' की तरह नहीं है। – geoffspear
[स्ट्रिंग को जोड़ने के लिए ''' .join' का उपयोग करें, न कि' + '।] (Http://stackoverflow.com/questions/1349311/python-string-join-is-faster-than-but-whats-wrong- यहाँ/1350289 # 1350289) – unutbu