كيف يمكن تحقيق هذا السلوك؟ بيثون "الدائرة القصيرة" اختبار
-
06-07-2019 - |
سؤال
ولدي البرمجية التالية:
def testGeodatabase(self):
geodatabaseList = self.gp.ListWorkspaces("*","ALL")
for x in geodatabaseList:
if x == self.outputGeodatabase:
return True
else:
pass
return False
وماذا أريد أن أعرف ما يلي: في حالة إذا تم تقييم شرط صحيح، سوف تتوقف وظيفة أبحث في القائمة وأبدا عودة كاذبة؟ أو هل أنا بحاجة بيان استراحة؟
def testGeodatabase(self):
geodatabaseList = self.gp.ListWorkspaces("*","ALL")
for x in geodatabaseList:
if x == self.outputGeodatabase:
return True
break
else:
pass
return False
إذا لم البرمجية التالية حل مشكلتي، ما الذي يمكنني استخدامها للقيام محاكاة هذا السلوك؟
والشكر
المحلول
وreturn
هو نهاية السطر، وأي شيء آخر سوف يحدث في تلك الوظيفة بعد ذلك. من ناحية أخرى، هل يمكن كتابة الدالة ك
def testGeodatabase(self):
return self.outputGeodatabase in self.gp.ListWorkspaces("*","ALL")
نصائح أخرى
وأنت لا تحتاج الكلمة فاصل في رمز أعلاه. في الواقع، لا تحتاج ل
else:
pass
وإما. و
return True
وسيتم إنهاء الدالة.
والبيان return
سيتسبب في الواقع وظيفة لأن خرجت في تلك المرحلة. يتم تنفيذ أي رمز آخر في وظيفة.
وهنا هو اختبار بسيط الذي يمكن تشغيله لإثبات هذه النقطة:
def someFunction(nums):
for i in nums:
if i == 1:
return "Found 1!"
return "Never found 1"
وتشغيله:
>>> someFunction([2])
'Never found 1'
>>> someFunction([2,1,3])
'Found 1!'
وأعتقد أن استخدام any()
هو الخيار الأفضل:
def testGeodatabase(self):
geodatabaseList = self.gp.ListWorkspaces("*","ALL")
return any(x == self.outputGeodatabase for x in geodatabaseList)
لا تنتمي إلى StackOverflow