Funções transformam código repetitivo em blocos nomeados e reutilizáveis. Uma função bem escrita tem um propósito claro, recebe dados de entrada (parâmetros), processa e retorna um resultado. É a base de qualquer código Python que escala além de um script de 20 linhas.
Definindo uma função simples
def calcula_bonus(salario, percentual):
bonus = salario * percentual / 100
return bonus
# Chamando a função:
resultado = calcula_bonus(5000, 10)
print(f"Bônus: R$ {resultado:.2f}") # Bônus: R$ 500.00
A função recebe dois parâmetros, calcula e retorna o resultado. Cada chamada pode ter valores diferentes.
Parâmetros com valores padrão
def calcula_bonus(salario, percentual=10, moeda="R$"):
bonus = salario * percentual / 100
return f"{moeda} {bonus:.2f}"
print(calcula_bonus(5000)) # R$ 500.00 (usa padrão 10%)
print(calcula_bonus(5000, 15)) # R$ 750.00
print(calcula_bonus(5000, moeda="$")) # $ 500.00 (kwargs)
Parâmetros com padrão são opcionais. Ao chamar, você pode usar o nome do parâmetro para passar na ordem que quiser.
Retornando múltiplos valores
def analisa_vendas(valores):
total = sum(valores)
media = total / len(valores)
maximo = max(valores)
return total, media, maximo # retorna uma tupla
vendas = [1200, 3400, 890, 5600, 2100]
total, media, maior = analisa_vendas(vendas)
print(f"Total: {total}, Média: {media:.0f}, Maior: {maior}")
*args e **kwargs: parâmetros variáveis
def soma_tudo(*numeros):
# *args captura qualquer número de argumentos como tupla
return sum(numeros)
print(soma_tudo(1, 2, 3)) # 6
print(soma_tudo(10, 20, 30, 40)) # 100
def exibe_info(**dados):
# **kwargs captura pares chave=valor como dicionário
for chave, valor in dados.items():
print(f"{chave}: {valor}")
exibe_info(nome="Ana", cargo="Analista", salario=6000)
Docstrings: documentando funções
def calcula_bonus(salario, percentual=10):
'''
Calcula o bônus de um funcionário.
Args:
salario (float): Salário base do funcionário.
percentual (float): Percentual do bônus (padrão: 10%).
Returns:
float: Valor do bônus calculado.
'''
return salario * percentual / 100
Docstrings aparecem quando você usa help(calcula_bonus) ou passa o mouse sobre a função no VS Code.
Perguntas frequentes
Qual a diferença entre print() e return?
print() exibe na tela mas a função não devolve nada para quem chamou. return devolve o valor para quem chamou, que pode armazenar e usar. Para funções reutilizáveis, sempre prefira return — print é para depuração e saída final.
O que é uma função lambda?
Lambda é uma função anônima de uma linha: dobro = lambda x: x * 2. Útil para funções simples passadas como argumento (ex: lista.sort(key=lambda x: x["valor"])). Para lógica mais complexa, prefira def com nome descritivo.