Módulo 13 - Funções

Parâmetros: as entradas da função

10 min de leitura · por Cesar Gargiulo, revisado pela equipe ValorFinal e GuardiaSec · Atualizado em 01/07/2026

O que você vai aprender

  • Declarar parâmetros nos parênteses da definição.
  • Chamar funções passando um, dois ou vários valores.
  • Diferenciar parâmetro (na definição) de argumento (na chamada).
  • Criar parâmetros opcionais com valores padrão.

A função que recebe dados

A função saudar da aula passada imprime sempre a mesma frase, para todo mundo. Útil, mas limitada. O salto de qualidade vem quando a função aceita informações de fora e adapta o comportamento a elas. Você já viu isso mil vezes do lado de quem usa: print aceita o texto a mostrar, len aceita o que medir. Agora você vai fazer o mesmo nas suas funções, e o mecanismo se chama parâmetro: um nome declarado entre os parênteses do def, que se comporta como uma variável de entrada.

def saudar(nome):
    print(f"Olá, {nome}! Bom te ver por aqui.")

saudar("Maria")
saudar("João")

# Olá, Maria! Bom te ver por aqui.
# Olá, João! Bom te ver por aqui.

Um parâmetro, duas chamadas, duas saídas diferentes. A função virou um molde.

Acompanhe o fluxo da primeira chamada: o Python encontra saudar("Maria"), pula para a função e entrega o texto Maria ao parâmetro nome. Dentro do corpo, nome vale Maria, e a f-string do módulo 12 monta a frase. Na segunda chamada, nome vale João. O parâmetro é uma variável que nasce a cada chamada, com o valor recebido, e morre quando a função termina. Ele só existe dentro do corpo: tentar usar nome fora da função gera NameError, porque lá fora esse nome nunca existiu.

Dois ou mais parâmetros: a ordem manda

Uma função aceita quantos parâmetros você declarar, separados por vírgula. Na chamada, os argumentos preenchem os parâmetros na ordem: o primeiro argumento vai para o primeiro parâmetro, o segundo para o segundo, e assim por diante. Ordem trocada não gera erro nenhum; gera resultado errado, que é pior.

def apresentar(nome, idade):
    print(f"{nome} tem {idade} anos.")

apresentar("Ana", 30)
apresentar(30, "Ana")

# Ana tem 30 anos.
# 30 tem Ana anos.

A segunda chamada roda sem erro e sai absurda. O Python obedece a ordem, não a intenção.

Aproveite para acertar o vocabulário, sem pedantismo: parâmetro é o nome na definição (nome, idade); argumento é o valor na chamada (Ana, 30). Na conversa do dia a dia, muita gente usa as duas palavras como sinônimo e todo mundo se entende. Vale conhecer a diferença porque mensagens de erro do Python usam o termo argument: quando você chamar apresentar("Ana") esquecendo a idade, o erro dirá missing 1 required positional argument, ou seja, faltou 1 argumento obrigatório. Agora você sabe ler isso.

TermoOnde apareceExemplo
ParâmetroNa definição, entre os parênteses do defdef apresentar(nome, idade):
ArgumentoNa chamada, entre os parêntesesapresentar("Ana", 30)

Parâmetro é o molde; argumento é o material que preenche o molde.

Valores padrão: parâmetros opcionais

Às vezes um parâmetro tem um valor óbvio na maioria das chamadas, e obrigar todo mundo a repeti-lo é chato. Para isso existe o valor padrão: você declara o parâmetro com um sinal de igual e o valor de reserva. Se a chamada não enviar aquele argumento, o padrão entra em cena; se enviar, o valor enviado vence.

def saudar(nome, saudacao="Olá"):
    print(f"{saudacao}, {nome}!")

saudar("Maria")
saudar("Maria", "Bom dia")

# Olá, Maria!
# Bom dia, Maria!

Sem o segundo argumento, vale o padrão Olá. Com ele, vale o que foi enviado.

Você usa isso há tempo sem perceber: o print aceita um parâmetro opcional chamado end, que por padrão vale uma quebra de linha; por isso cada print escreve numa linha nova sem você pedir. Uma regra de escrita para fechar: parâmetros com valor padrão vêm depois dos obrigatórios na definição. Escrever def saudar(saudacao="Olá", nome): gera SyntaxError, porque o Python não saberia decidir, numa chamada com um argumento só, qual parâmetro preencher.

Teste rápido

Com def saudar(nome, saudacao="Olá") definida, o que a chamada saudar("Pedro") imprime?

Perguntas frequentes

Qual é a diferença entre parâmetro e argumento, afinal?
Parâmetro é o nome declarado na definição da função, entre os parênteses do def. Argumento é o valor real enviado na chamada. Em def saudar(nome) e saudar('Maria'), nome é o parâmetro e 'Maria' é o argumento. No dia a dia as palavras se misturam, e tudo bem; a distinção ajuda a ler mensagens de erro.
Quantos parâmetros uma função pode ter?
Tecnicamente, muitos; na prática, quanto menos, melhor. Funções com até três ou quatro parâmetros são fáceis de usar sem consultar a definição. Acima disso, as chamadas viram adivinhação de ordem. Se a lista crescer, costuma ser sinal de que a função acumulou tarefas demais.
Posso passar uma variável como argumento em vez de um valor direto?
Pode, e é o caso mais comum. Em saudar(nome_digitado), o Python entrega o valor atual da variável ao parâmetro da função. O nome da variável de fora não precisa ser igual ao nome do parâmetro: o que viaja é o valor, não o nome.
O que acontece se eu passar argumentos a mais ou a menos?
O Python interrompe com um TypeError bem descritivo: missing 1 required positional argument quando falta, e takes 2 positional arguments but 3 were given quando sobra. É um erro fácil de corrigir: confira a definição da função e ajuste a chamada.
Posso nomear os argumentos na chamada, tipo saudar(nome='Maria')?
Pode: são os argumentos nomeados, ou keyword arguments. Eles deixam a chamada mais legível e permitem fugir da ordem: saudar(saudacao='Boa noite', nome='Ana') funciona. Neste curso básico usamos principalmente a forma posicional, mas você vai cruzar com argumentos nomeados em muito código por aí.
Um parâmetro pode receber uma lista?
Pode receber qualquer tipo do Python: número, texto, booleano, lista, dicionário. A função calcular_media da prática deste módulo recebe exatamente uma lista de notas e trabalha com ela usando sum e len, como qualquer lista do módulo 10.

Fontes

Seu progresso fica salvo neste aparelho. Assinantes sincronizam entre os aparelhos.