هل هناك اختصار بيثون لفحص متغير والتكليف؟

StackOverflow https://stackoverflow.com/questions/1207333

  •  05-07-2019
  •  | 
  •  

سؤال

وأنا وجدت نفسي كتابة ما يلي كثيرا (النامية من أجل جانغو، إذا كان هذا هو ذات الصلة):

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")
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top