هل هناك اختصار بيثون لفحص متغير والتكليف؟
سؤال
وأنا وجدت نفسي كتابة ما يلي كثيرا (النامية من أجل جانغو، إذا كان هذا هو ذات الصلة):
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)
المنطق؟
المحلول
وعلى افتراض انك تريد أن تترك myVariable يمسها إلى قيمتها السابقة في حالة "غير موجود"،
myVariable = testVariable or myVariable
ويتعامل مع الحالة الأولى، و
myVariable = request.POST.get('query', myVariable)
ويتناول الثاني. لا يوجد الكثير لتفعله مع "الوجود"، على الرغم من (والذي لا يكاد يكون مفهوم بيثون ؛-): الأول هو حول صحيحة أو خاطئة، ثانية واحدة عن وجود أو عدم وجود مفتاح في مجموعة
.نصائح أخرى
ويتم إدراج المقام الأول الغريب ... لماذا وضع منطقية لمنطقية أخرى؟
وما قد يعني هو وضع myVariable إلى testVariable عندما testVariable ليس الصفر سلسلة طول أو لا شيء أو لا شيء يحدث لتقييم إلى خطأ.
وإذا كان الأمر كذلك، لكنني أفضل الصيغ أكثر وضوحا
myVariable = testVariable if bool(testVariable) else somethingElse
myVariable = testVariable if testVariable is not None else somethingElse
عند فهرسة إلى القاموس، ببساطة استخدام get
.
myVariable = request.POST.get('query',"No Query")