Quando você esquece os dois pontos no final de uma linha, acidentalmente adiciona um espaço a mais ao recuar sob uma instrução if ou esquece um parêntese, você encontrará um erro de sintaxe. Isso significa que o Python não conseguiu descobrir como ler seu programa. Isso é semelhante a esquecer a pontuação em inglês: por exemplo, este texto é difícil de ler não há pontuação também não há letras maiúsculas por que isso é difícil porque você tem que descobrir onde cada frase termina você também tem que descobrir onde cada frase começa até certo ponto, pode ser ambíguo se deve haver uma quebra de frase ou não.


As pessoas normalmente podem descobrir o que significa texto sem pontuação, mas as pessoas são muito mais inteligentes que os computadores. Se o Python não souber ler o programa, ele desistirá e informará um erro. Por exemplo:


def funcao_somar()

    msg = 'Ola Mundo'

    print(msg)

     return msg

 



Saída —---------------------------------------------------------------

File "d:/Tutorial/Python_dicas/numeros.py", line 1
    def funcao_somar()     
                     ^     
SyntaxError: invalid syntax


Aqui, o Python nos diz que há um SyntaxError na linha 1 e até coloca uma pequena seta no local onde há um problema. Neste caso, o problema é que a definição da função está faltando dois pontos no final.


Na verdade, a função acima tem dois problemas com a sintaxe. Se corrigirmos o problema com os dois pontos, veremos que também há um IndentationError, o que significa que as linhas na definição da função não têm todas o mesmo recuo:


 

def funcao_somar():

    msg = 'Ola Mundo'

    print(msg)

     return msg

 



Saída —---------------------------------------------------------------


  File "d:/Tutorial/Python_dicas/numeros.py", line 4

    return msg

    ^

IndentationError: unexpected indent



Tanto SyntaxError quanto IndentationError indicam um problema com a sintaxe do seu programa, mas um IndentationError é mais específico: sempre significa que há um problema com a forma como seu código é recuado.


Tabs e espaços no Python

Alguns erros de recuo são mais difíceis de detectar do que outros. Em particular, misturar espaços e tabulações pode ser difícil de identificar porque ambos são espaços em branco. No exemplo abaixo, as duas primeiras linhas no corpo da função funcao_somar são recuadas com tabulações, enquanto a terceira linha — com espaços.


def funcao_somar():

        msg = 'Ola Mundo'

            print(msg)

            return msg

 


Visualmente é impossível identificar o erro. Felizmente, o Python não permite misturar tabulações e espaços.

Saída —---------------------------------------------------------------

File "d:/Tutorial/Python_dicas/numeros.py", line 3

    print(msg)

    ^

IndentationError: unexpected indent