Módulo 13 - Funções
Criando funções com def: anatomia completa
10 min de leitura · por Cesar Gargiulo, revisado pela equipe ValorFinal e GuardiaSec · Atualizado em 01/07/2026
O que você vai aprender
- Escrever uma definição de função com def, nome, parênteses e dois pontos.
- Indentar o corpo da função com 4 espaços, sem erro.
- Entender que definir não executa: só a chamada executa.
- Respeitar a ordem: definir a função antes de chamá-la.
Ouvir o resumo desta aula
Um recap de cerca de 2 minutos na voz do Valim, para ouvir no trânsito ou na academia.
Ler a transcrição do resumo
Resumo da aula: Criando funções com def: anatomia completa.
Os objetivos desta aula. Escrever uma definição de função com def, nome, parênteses e dois pontos. Indentar o corpo da função com 4 espaços, sem erro. Entender que definir não executa: só a chamada executa. Respeitar a ordem: definir a função antes de chamá-la.
Veja o essencial, parte por parte.
A anatomia: quatro peças, nenhuma opcional. Uma função nasce com: def, um nome, parênteses, dois pontos e o corpo indentado com 4 espaços.
A pegadinha clássica: definir não é executar. Agora a pegadinha que derruba praticamente todo iniciante na primeira semana de funções.
A ordem importa: definir antes de chamar. Esquecer os dois pontos no fim da linha do def: o Python responde com SyntaxError apontando a linha.
Esse foi o resumo do essencial. Para se aprofundar, leia a aula completa e responda os exercícios.
A anatomia: quatro peças, nenhuma opcional
Criar uma função tem uma receita fixa, e cada peça dela tem um motivo. Começa com a palavra-chave def, que avisa o Python: uma função vai ser definida aqui. Depois vem o nome que você escolhe, seguindo as mesmas regras das variáveis do módulo 4: letras minúsculas, números e underline, sem espaço e sem acento. Depois do nome, um par de parênteses, que por enquanto fica vazio. A linha fecha com dois pontos, o mesmo sinal que você já usa no if e no while para anunciar um bloco. E abaixo, indentado com 4 espaços, vem o corpo: as linhas que a função executa.
def saudar():
print("Olá! Bem-vindo ao programa.")
print("Vamos começar?")
# def -> palavra-chave que inicia a definição
# saudar -> nome escolhido por você (regras de variável)
# () -> parênteses, vazios por enquanto
# : -> dois pontos anunciam o bloco
# 4 espaços -> corpo da função (o que ela faz)A anatomia completa. As duas linhas indentadas pertencem à função.
A indentação aqui funciona igual à do if e à do while, que você domina desde os módulos 7 e 8: ela diz onde o bloco começa e onde termina. Tudo que estiver indentado abaixo do def pertence à função. A primeira linha que voltar à margem esquerda já está fora dela. Um deslize de indentação muda o significado do programa, então mantenha o padrão de 4 espaços que o curso usa desde o início. Sobre o nome: escolha um verbo que diga o que a função faz, como saudar, calcular_media ou imprimir_cabecalho. Um bom nome economiza comentário.
A pegadinha clássica: definir não é executar
Agora a pegadinha que derruba praticamente todo iniciante na primeira semana de funções. Digite o código abaixo no Playground e execute. Prepare-se para uma surpresa: a tela fica vazia.
def saudar():
print("Olá! Bem-vindo ao programa.")
# Executou? A saída fica VAZIA.
# O def apenas GUARDA a função na memória.
# Ninguém mandou executar ainda.O programa rodou sem erro e não mostrou nada. Está tudo certo: definir é só guardar.
Não é defeito, é o comportamento correto. O def apenas ensina a receita ao Python: guarda o bloco na memória, associado ao nome saudar, e segue em frente sem executar linha nenhuma do corpo. É como anotar a receita do bolo no caderno: o caderno anotado não produz bolo. Para o bolo existir, alguém precisa abrir o caderno e cozinhar. No Python, esse ato é a chamada: o nome da função seguido de parênteses.
def saudar():
print("Olá! Bem-vindo ao programa.")
saudar()
saudar()
# Olá! Bem-vindo ao programa.
# Olá! Bem-vindo ao programa.Uma definição, duas chamadas, duas execuções. Esse é o ciclo completo.
Repare no que aconteceu: o corpo foi escrito uma vez e executou duas, porque houve duas chamadas. Quando o Python encontra saudar(), ele pula para dentro da função, executa o corpo linha por linha e, ao terminar, volta para o ponto onde estava e continua o programa. Esse vai e volta é o coração do módulo inteiro, e vale digitar o exemplo no Playground para ver com os próprios olhos.
A ordem importa: definir antes de chamar
Falta uma regra para fechar a anatomia: a definição precisa vir antes da primeira chamada. O Python lê o arquivo de cima para baixo, e só conhece a função depois de passar pela linha do def. Se a chamada aparecer antes, ele encontra um nome que ainda não existe e para com um NameError, o mesmo erro de quando você usa uma variável antes de criá-la.
saudar()
def saudar():
print("Olá!")
# NameError: name 'saudar' is not defined
# Na linha 1, o Python ainda não conhece a função.Chamada antes da definição: o Python lê de cima para baixo e não adivinha o futuro.
Por isso, o costume que você vai ver em todo código bem organizado: as definições de função ficam agrupadas no topo do arquivo, e o programa principal, a sequência de chamadas, fica no final. Essa organização vira o assunto central da aula 6. Por enquanto, grave o resumo da anatomia: def nome(): na primeira linha, corpo com 4 espaços, definição antes da chamada, e a certeza de que nada executa até alguém escrever o nome com parênteses.
Teste rápido
Um programa contém só a definição de uma função com def e nenhuma chamada. O que acontece ao executar?
Perguntas frequentes
- Posso dar qualquer nome a uma função?
- Quase. Valem as regras das variáveis: começar com letra ou underline, usar só letras, números e underline, sem espaços nem acentos, e não usar palavras-chave do Python como if ou def. Também evite nomes de funções prontas, como print e len: o Python aceita, mas o nome original fica escondido e o programa vira uma armadilha.
- Quantos espaços devo usar na indentação do corpo?
- O padrão oficial da comunidade, definido na PEP 8, é 4 espaços, o mesmo que o curso usa em if, while e for. O que não pode é misturar: escolher 4 espaços numa linha e tabulação na outra gera erro. Editores como o VS Code cuidam disso sozinhos ao apertar Tab.
- Uma função pode chamar outra função?
- Pode, e isso é comum e saudável. O corpo de uma função aceita qualquer código válido, incluindo chamadas de outras funções, suas ou do Python. A aula 6 usa exatamente isso para montar programas organizados: funções pequenas chamadas por um programa principal.
- Posso definir a mesma função duas vezes?
- O Python aceita sem reclamar, mas a segunda definição substitui a primeira, silenciosamente. A partir dali, toda chamada executa a versão nova. É fonte clássica de confusão, então a regra prática é: um nome, uma definição por programa.
- O que acontece se eu escrever o nome da função sem os parênteses?
- Nada executa e nenhum erro aparece, o que engana bastante. A linha saudar sem parênteses só faz o Python olhar para a função, sem rodá-la. É como apontar para o contato do telefone sem tocar nele. Os parênteses são o gesto de executar.
- Existe limite de linhas para o corpo de uma função?
- Tecnicamente não, mas a boa prática pede funções curtas, de poucas linhas, cada uma com uma tarefa clara. Se o corpo passa de 20 ou 30 linhas, costuma ser sinal de que dá para dividir em funções menores. Função pequena é mais fácil de ler, testar e consertar.
Fontes
Seu progresso fica salvo neste aparelho. Assinantes sincronizam entre os aparelhos.