Python Multi-Line if Condição
Condições multilinhas em uma instrução if
em Python foram fornecidas com várias maneiras permitidas em PEP8.
Para começar, as várias declarações de condição não devem ser colocadas em uma única linha. Em vez disso, divida esta única linha das várias condições e coloque-as entre parênteses.
# 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
O PEP8 orienta sobre o uso de linhas de continuação para separar as declarações de condição de várias linhas. Essas linhas devem ser alinhadas verticalmente e espaçadas com um recuo de quatro espaços a partir do início da nova linha. O parêntese de fechamento e os dois pontos mostram claramente o fim da condição.
Aparentemente, Python tem uma maneira automática de criar um recuo de quatro espaços sempre que você combina uma palavra-chave de dois caracteres como if
, um único espaço e um parêntese de abertura. Portanto, não há necessidade de adicionar indentação extra na quebra de condição.
Código de exemplo:
if (this_matches_condition, this_also_matches_condition): # end of conditions
get_something_done()
Se você definir o estilo das várias condições como acima, há uma vantagem de fácil legibilidade do código. Também faz com que as condições complexas tenham uma expressão mais limpa.
Em um cenário onde palavras-chave do operador lógico como e
e ou
estão incluídas nas condições, é altamente recomendável, de acordo com o guia PEP8, colocar o operador lógico (e, ou) antes das linhas de condição de continuação. Esse estilo é conhecido como estilo de Knuth. Ele aumenta a legibilidade das condições devido ao recuo automático de quatro espaços definido pelo Python, para fazer todas as condições se alinharem verticalmente.
Também torna as condições mais visíveis entre parênteses e traz a vantagem da avaliação de curto-circuito.
Exemplo:
if sttmt1 and (sttmt2 or sttmt3) or name == "Goodman":
something_happens
Uma forma alternativa de estilizar essas declarações de condição de várias linhas é definir uma variable
e atribuir essas expressões de condição a ela. No entanto, esse método não é totalmente encorajado porque tende a limitar a refatoração subsequente. No entanto, o código parecerá mais claro se uma variável for usada e também fornece uma compreensão melhor do fluxo de controle do 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
A instrução if no código acima garante que algo seja implementado se e somente se toda a condition_list
for verdadeira. Caso contrário, algo mais é implementado quando até mesmo uma das condições na lista_condição
é falsa.
Você pode envolver um par extra de parênteses em torno das condições para mostrar visivelmente as expressões de condição.
if sttmt1 and (sttmt2 or sttmt3) or name == "Goodman":
something_happens