Olá,
Tanto "def" quanto "if" são comandos em python que são seguidos por uma identação na próxima linha pois os comandos seguintes fazem parte do bloco que essas keywords significam, nesses casos você precisa colocar os ":" para dizer que você fechou o bloco e a partir dai é esperado uma identenção na próxima linha.
Comandos como for, while, class e outros também vão pedir os ":" no final, alguns exemplos abaixo para você entender o motivo de ser necessário esse indicador de que seu comando chegou ao fim:
idade = 20
if idade >= 10: #nesse caso o ':' está dizendo que as condições do seu if acabou, apesar de parecer que é desnecessário
print(idade)
# outro exemplo
if idade >= 10 and idade <=20: #nesse caso você teve duas condições, enquanto o seu if não chega no ':', não acabam as regras do seu if
print(idade)
# outro exemplo:
if idade >= 10 and \ # usar barra invertida te permite escrever comandos multi-linhas, seguindo as boas práticas do PEP8 você nunca deveria escrever linhas longas demais, nesse caso fica útil
idade <= 20: # seu if realmente acabou aqui, pois só aqui apareceu o ':'
print(idade)
Abs!