Оценка короткого замыкания, например, «и» в Python, при сохранении результатов проверок
У меня есть несколько дорогих функций, которые возвращают результаты. Я хочу вернуть кортеж результатов всех проверок, если все проверки пройдут успешно. Тем не менее, если одна проверка не удалась, я не хочу вызывать более поздние проверки, такие как короткое замыканиеand
, Я мог бы гнездитьсяif
заявления, но это выйдет из-под контроля, если будет много проверок. Как я могу получить поведение короткого замыканияand
сохраняя результаты для последующего использования?
def check_a():
# do something and return the result,
# for simplicity, just make it "A"
return "A"
def check_b():
# do something and return the result,
# for simplicity, just make it "B"
return "B"
...
Это не короткое замыкание:
a = check_a()
b = check_b()
c = check_c()
if a and b and c:
return a, b, c
Это грязно, если есть много проверок:
if a:
b = check_b()
if b:
c = check_c()
if c:
return a, b, c
Есть ли более короткий способ сделать это?