2009-07-30 3 views
7

मैं अपने आप को एक बहुत निम्न लिखकर खोजने कर रहा हूँ (Django के लिए विकसित करने, अगर है कि प्रासंगिक है): वैकल्पिक रूप सेक्या परिवर्तनीय जांच और असाइनमेंट के लिए कोई पायथन शॉर्टकट है?

if testVariable then: 
    myVariable = testVariable 
else: 
    # something else 

, और अधिक सामान्यतः (यानी एक पैरामीटर सूची के निर्माण)

if 'query' in request.POST.keys() then: 
    myVariable = request.POST['query'] 
else: 
    # something else, probably looking at other keys 

है वहाँ एक शॉर्टकट मैं बस इतना नहीं जानता कि यह सरल है? myVariable = assign_if_exists(testVariable) के तर्क के साथ कुछ?

उत्तर

25

मान लें कि आप "मौजूद नहीं" मामले में पिछला मान को myVariable अछूता छोड़ना चाहते हैं, पहले मामले के साथ

myVariable = testVariable or myVariable 

सौदों, और साथ

myVariable = request.POST.get('query', myVariable) 

सौदों दूसरा। न तो "अस्तित्व" के साथ बहुत कुछ करना है, हालांकि (जो शायद ही कोई पायथन अवधारणा है ;-): पहला व्यक्ति सत्य या गलत है, दूसरा संग्रह या किसी संग्रह में कुंजी की अनुपस्थिति के बारे में है।

+0

पहला मुहावरे वास्तव में अच्छा है: केवल दूसरे दिन ही पता चला। – jkp

+0

धन्यवाद, सही। आश्चर्य है कि मैं अब तक इस वाक्य रचनात्मक चीनी को याद करने में कैसे कामयाब रहा! –

7

पहला उदाहरण विचित्र रूप से बताया गया है ... एक बुलियन को अन्य बूलियन क्यों सेट करें?

क्या आप का मतलब यह हो सकता है कि परीक्षण करने के लिए मेरा सेट सेट करने योग्य है जब परीक्षण योग्य शून्य लंबाई स्ट्रिंग नहीं है या नहीं, कोई भी नहीं है या गलत का मूल्यांकन करने के लिए कुछ नहीं होता है।

यदि हां, तो मैं जब एक शब्दकोश में का अनुक्रमण अधिक स्पष्ट योगों

myVariable = testVariable if bool(testVariable) else somethingElse 

myVariable = testVariable if testVariable is not None else somethingElse 

पसंद करते हैं, बस get का उपयोग करें।

myVariable = request.POST.get('query',"No Query") 
संबंधित मुद्दे