У меня есть несколько дорогих функций, которые возвращают результаты. Я хочу вернуть кортеж результатов всех проверок, если все проверки будут успешными. Однако, если одна проверка завершилась неудачно, я не хочу вызывать более поздние проверки, например, поведение короткого замыкания 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
Есть ли более короткий способ сделать это?