Diferença entre if e elif

Obrigado pela A2A.

Acho que nenhuma das respostas mostra dois trechos de código que fazem exatamente a mesma coisa para exemplificar para que serve o elif.

É simplesmente um aninhado se estiver dentro do bloco else.

Portanto, sem usar else, se temos este código:

x = 5se x <5: print ("x menor que 5")outro: se x <10: print ("x menor que 10") outro: print ("x maior ou igual a 10")

É um pouco difícil de ler e feio. Assim, python (e a maioria das linguagens) possui uma declaração chamada elif (outras linguagens a chamam de maneira diferente, elseif, else if, elsif e assim por diante). O mesmo código usando elif se parece com:

x = 5se x <5: print ("x menor que 5")elif x <10: print ("x menor que 10")outro: print ("x maior ou igual a 10")

Os dois trechos acima são idênticos ao ponto em que geram o mesmo código de bytes.

Se você salvar os seguintes trechos em dois arquivos diferentes elif.py e noelif.py, poderá gerar o código de byte legível por humanos com:

python3 -m dis noelif.py> noelif.bytecodepython3 -m dis elif.py> elif.bytecode

E veja os arquivos noelif.bytecode e elif.bytecode são completamente idênticos, com exceção das referências de número de linha à esquerda (como a versão no elif tem 8 linhas em oposição a 7 devido à instrução if interna iniciando na linha 5 como em oposição à condição estar na linha 4, como no exemplo elif).

Para referência, adicionei os arquivos em um

essência

. Eu usei python3.