sintaxis segun realiza ejemplo decisiones condicionales condicional como codigo bucles python exception conditional-statements raise zen

python - segun - elevar declaración sobre una expresión condicional



si no python (4)

Bueno, podrías probar el bool por separado:

if expr: raise exception(''foo'') return val

De esa manera, podrías hacer una prueba para expr antes.

Siguiendo el "principio Samurai", estoy tratando de hacer esto en mis funciones pero parece que está mal ...

return <value> if <bool> else raise <exception>

¿Hay alguna otra forma "hermosa" de hacer esto? Gracias


En línea / ternario if es una expresión, no una declaración. Su intento significa "si es bool, devuelve un valor, de lo contrario, devuelva el resultado de la raise expression de raise expression ", lo cual no tiene sentido, por supuesto, porque la raise exception es en sí misma una declaración, no una expresión.

No hay manera de hacer esto en línea, y no deberías querer hacerlo. Hazlo explícitamente:

if not bool: raise MyException return value


Me gusta hacerlo con aserciones, por lo que enfatiza que ese miembro debe ser, como un contrato.

>>> def foo(self): ... assert self.value, "Not Found" ... return self.value


Si absolutamente quieres raise en una expresión, podrías hacer

def raiser(ex): raise ex return <value> if <bool> else raiser(<exception>)

Esto "intenta" devolver el valor de retorno de raiser() , que sería None , si no hubiera un raise incondicional en la función.