2011-12-15 20 views
6

मेरे पास एक मौजूदा एप्लिकेशन है जो डेटाबेस से कनेक्ट होता है। यह पायथन 2.7 के तहत चल रहा है।पायथन में कोई भी बनाम खाली स्ट्रिंग

एप्लिकेशन किसी भी प्रकार का उपयोग करने में असंगत नहीं है और "" वेरिएबल्स को पॉप्युलेट करने के लिए असंगत है, जिनके पास मूल्य नहीं है। मैं इसे सुसंगत बनाना चाहता हूं और कोड को एक तरफ या दूसरे को अपडेट करने का प्रयास करना चाहता हूं।

एक डेटाबेस व्यक्ति के रूप में सोच रही थी मैं अशक्त रूप में एक ही रूप में कोई नहीं के बारे में सोच और ग्रहण करेंगे कि खाली चर के लिए सही विकल्प होगा, लेकिन जब आवेदन की तरह

if variable.upper() == "X": 
    #Do something 

इस के रूप में काम करता है तो यह समस्याओं का कारण बनता परिवर्तनीय कोई त्रुटि नहीं है अगर एक त्रुटि उठाता है।

मैं

if variable is not None and variable.upper() == "X": 
    #Do something 

कर सकते हैं लेकिन यह अनावश्यक रूप से अत्यधिक शब्द लगता है।

क्या इसे संभाला जाना चाहिए इसके लिए कोई सर्वोत्तम अभ्यास है?

+0

[पायथन के ज़ेन] से उद्धरण के लिए (http://www.python.org/dev/peps/pep-0020/): स्पष्ट रूप से स्पष्ट स्पष्ट है। –

उत्तर

9

तुम बस

if variable and variable.upper() == "X": 
    #Do something 

लिख कर थोड़ा कोड में कटौती कर सकता है चर कोई नहीं या रिक्त है, तो यह गलत के बराबर है।

2
if variable and variable.upper() == 'X' 

थोड़ा कम शब्द है। यह किसी भी तरह और खाली स्ट्रिंग को उसी तरह से इलाज नहीं करेगा यदि आप चाहते हैं कि

संपादित करें: ध्यान दें कि आपके द्वारा खाली स्ट्रिंग को संभालने के तरीके में पोस्ट की गई अभिव्यक्ति के लिए अलग-अलग अर्थशास्त्र हैं ... यानी आपके यदि चर रिक्त स्ट्रिंग है अभिव्यक्ति की आरएचएस और का मूल्यांकन किया जायेगा, लेकिन इस अभिव्यक्ति में यह नहीं के रूप में रिक्त स्ट्रिंग False

3

के लिए अगर (variable or '').upper() == 'X' या variable and variable.upper() == 'X' दोनों एक आशुलिपि होगा मूल्यांकन करता है, लेकिन यह निश्चित रूप से बिल्कुल के रूप में नहीं है मूल कोड के रूप में कॉम्पैक्ट। मुझे डर है कि आप ज्यादा बेहतर नहीं होंगे, हालांकि।

आप

def norm(s): 
    return s or '' 

... 
if norm(s) == 'X': 

कर सकता है लेकिन ultimatively यह भी ज्यादा के लिए नहीं बदलेगा। शायद मूल भेद इतना असंगत नहीं था, बल्कि संदर्भ में बहुत व्यावहारिक था?

संबंधित मुद्दे