Avaliação de curto-circuito, como “e” do Python, enquanto armazena os resultados das verificações

Eu tenho várias funções caras que retornam resultados. Desejo retornar uma tupla dos resultados de todas as verificações, se todas as verificações tiverem êxito. No entanto, se uma verificação falhar, não quero chamar as verificações posteriores, como o comportamento de curto-circuito deand. Eu poderia aninharif , mas isso ficará fora de controle se houver muitas verificações. Como posso obter o comportamento de curto-circuito deand enquanto também armazena os resultados para uso posterior?

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"

...

Isso não provoca curto-circuito:

a = check_a()
b = check_b()
c = check_c()

if a and b and c:
    return a, b, c

Isso é confuso se houver muitas verificações:

if a:
   b = check_b()

   if b:
      c = check_c()

      if c:
          return a, b, c

Existe uma maneira mais curta de fazer isso?

questionAnswers(13)

yourAnswerToTheQuestion