Python Multi-Line if Condición

Neema Muganga 10 octubre 2023
Python Multi-Line if Condición

Las condiciones de varias líneas en una declaración if en Python se han proporcionado con varias formas permitidas en PEP8.

Para empezar, las declaraciones de condiciones múltiples no deben colocarse en una sola línea. En su lugar, divida esta única línea de las múltiples condiciones y envuélvalas entre paréntesis.

# do not define the multiple conditions in a single line like this
if (
    firstcondition == "something"
    and secondcondition == "something else"
    and thirdcondition == "something different"
):
    # something_to_be_done
    pass

PEP8 guía sobre el uso de líneas de continuación para separar las declaraciones de condición de varias líneas. Estas líneas deben estar alineadas verticalmente y espaciadas con una sangría de cuatro espacios desde el comienzo de la nueva línea. El paréntesis de cierre y los dos puntos muestran claramente el final de la afección.

Aparentemente, Python tiene una forma automática de crear una sangría de cuatro espacios cada vez que combina una palabra clave de dos caracteres como if, un solo espacio y un paréntesis de apertura. Por lo tanto, no es necesario agregar una sangría adicional en el salto de condición.

Código de ejemplo:

if (this_matches_condition, this_also_matches_condition):  # end of conditions
    get_something_done()

Si aplica estilo a las múltiples condiciones como el anterior, existe la ventaja de que el código es fácil de leer. También hace que las condiciones complejas tengan una expresión más limpia.

En un escenario donde las palabras clave de operador lógico como and y or se incluyen en las condiciones, es muy recomendable, de acuerdo con la guía PEP8, colocar el operador lógico (and, or) antes de las líneas de condición de continuación. Este estilo se conoce como estilo de Knuth. Mejora la legibilidad de las condiciones debido a la sangría automática de cuatro espacios establecida por Python, para que todas las condiciones se alineen verticalmente.

También hace que las condiciones sean más visibles entre paréntesis y aporta la ventaja de la evaluación de cortocircuito.

Ejemplo:

if sttmt1 and (sttmt2 or sttmt3) or name == "Goodman":

    something_happens

Una forma alternativa de dar estilo a estas declaraciones de condición de varias líneas es definiendo una variable y asignándole estas expresiones de condición. Sin embargo, este método no se recomienda del todo porque tiende a limitar la refactorización posterior. Sin embargo, el código se verá más claro si se usa una variable y también proporciona una mejor comprensión del flujo de control del programa.

condition_list = (
    condition_one == "number1"
    and condition_two == "number2"
    and condition_three == "number3"
)

if conditions_list:
    # implement_something
    pass

else:
    # something_else _is _done
    pass

La declaración if en el código anterior asegura que algo se implemente si y solo si toda la condition_list es verdadera. De lo contrario, se implementa algo más cuando incluso una de las condiciones de la condition_list es falsa.

Puede envolver un par de paréntesis adicional alrededor de las condiciones para mostrar visiblemente las expresiones de la condición.

if sttmt1 and (sttmt2 or sttmt3) or name == "Goodman":
    something_happens

Artículo relacionado - Python Statement