Evaluación de cortocircuito como "y" de Python mientras se almacenan los resultados de las comprobaciones

Tengo múltiples funciones costosas que devuelven resultados. Quiero devolver una tupla de los resultados de todas las comprobaciones si todas las comprobaciones tienen éxito. Sin embargo, si falla una comprobación, no quiero llamar a las comprobaciones posteriores, como el comportamiento de cortocircuito deand. Podría anidarif declaraciones, pero eso se saldrá de control si hay muchos controles. ¿Cómo puedo obtener el comportamiento de cortocircuito deand mientras que también almacena los resultados para su 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"

...

Esto no hace un corto circuito:

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

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

Esto es complicado si hay muchos controles:

if a:
   b = check_b()

   if b:
      c = check_c()

      if c:
          return a, b, c

¿Hay una forma más corta de hacer esto?

Respuestas a la pregunta(13)

Su respuesta a la pregunta