यह देखते हुए कि पिछली चर्चा की स्थापना की है चर के दोनों None
हो सकता है कि लगता है, एक दृष्टिकोण होगा (यह मानते हुए आप object.updated_date
स्थापित करने के लिए जब चर के दोनों None
है चाहते हैं) हो:
if None in (past, object.updated_date) or object.updated_date >= past:
object.updated_date = now
बिंदु यह है कि चेक None in (past, object.updated_date)
अर्थात् समकक्ष वैकल्पिक (past is None or object.update_date is None)
(तर्कसंगत रूप से एक बेहतर ईपीएसलॉन बेहतर पठनीयता के लिए अधिक पठनीय धन्यवाद की तुलना में आसान हो सकता है, लेकिन यह निश्चित रूप से शैली का एक तर्कसंगत मामला है)।
एक तरफ के रूप में, और स्टाइल का एक कम तर्कसंगत मामला ;-), मैं अपने स्वयं के चर (और फ़ंक्शंस इत्यादि) के नाम के रूप में अंतर्निर्मित नामों का उपयोग करने की दृढ़ता से अनुशंसा करता हूं - object
इस तरह का एक निर्मित- नाम में जो इस संदर्भ में स्पष्ट रूप से आपके अपने उद्देश्यों के लिए उपयोग किया जा रहा है। obj
का उपयोग करना अधिक संक्षेप में है, अभी भी पठनीय (तर्कसंगत रूप से अधिक ;-), और इसका कोई नकारात्मक पक्ष नहीं है। आप किसी भी मामले में किसी भी मामले में "काटने" की संभावना नहीं है, जो आपके स्वयं के नामों के "शेडिंग" नामों के इफफी अभ्यास से है, लेकिन आखिर में ऐसा होगा (जैसा कि आपको कुछ के दौरान छायादार नाम के सामान्य अर्थ की आवश्यकता होती है बाद में सामान्य रखरखाव ऑपरेशन) और आप तब भ्रमित डीबगिंग स्थिति के लिए हो सकते हैं; इस बीच, आप अन्य पाठकों/रखरखाव को भ्रमित करने का जोखिम उठाते हैं ... और इन नुकसानों के बदले में बिल्कुल कोई फायदा नहीं हो रहा है।
मुझे लगता है कि अजगर के अंतर्निहित-इन के नाम से कई एक "आकर्षक उपद्रव" इस अर्थ में ... file
, object
, list
, dict
, set
, min
, max
रहे हैं ..."एक फ़ाइल", "ऑब्जेक्ट", "एक सूची" इत्यादि के लिए सभी स्पष्ट रूप से आकर्षक नाम, लेकिन, इस विशेष प्रलोभन का विरोध करना सीखना फायदेमंद है! -)
स्रोत
2010-07-03 16:50:34
कोई त्रुटि नहीं है कि आप उस त्रुटि को प्राप्त कर सकें उस रेखा पर यदि दोनों 'datetime.datetime' के उदाहरण हैं। –