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.

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.