Funções; Fundamentos
O que é uma função?
Função é um bloco de código com nome que você define uma vez e usa quantas vezes precisar. Em vez de copiar e colar o mesmo trecho, você chama a função pelo nome.
Funções organizam o código em pedacos menores, facilitam a reutilização e tornam tudo mais fácil de testar. Toda função em Python começa com def, seguida do nome, dos parâmetros entre parênteses e de dois pontos.
Função simples sem retorno
Quando a função só executa algo (como imprimir), o retorno e None:
def saudar() -> None:
print("Olá, bem-vindo ao curso!")
saudar() # → Olá, bem-vindo ao curso!
Função com parâmetros e retorno
Use type hints nos parâmetros (: tipo) e no retorno (-> tipo):
def somar(a: int, b: int) -> int:
return a + b
resultado: int = somar(3, 5)
print(resultado) # → 8
def calcular_media(notas: list[float]) -> float:
return sum(notas) / len(notas)
média: float = calcular_media([8.5, 7.0, 9.2])
print(f"Media: {média:.1f}") # → Media: 8.2
def e_aprovado(nota: float) -> bool:
return nota >= 7.0
print(e_aprovado(8.5)) # → True
print(e_aprovado(5.0)) # → False
Valores padrão
Parâmetros com valor padrão se tornam opcionais na chamada:
def saudar(nome: str, saudação: str = "Olá") -> str:
return f"{saudação}, {nome}!"
print(saudar("Ana")) # → Olá, Ana!
print(saudar("Bruno", "Bom dia")) # → Bom dia, Bruno!
def calcular_desconto(preco: float, percentual: float = 10.0) -> float:
desconto: float = preco * (percentual / 100)
return preco - desconto
print(calcular_desconto(100.0)) # → 90.0 (desconto padrão 10%)
print(calcular_desconto(100.0, 25.0)) # → 75.0 (desconto 25%)
Keyword arguments
Você pode passar argumentos pelo nome, sem se preocupar com a ordem:
def criar_perfil(nome: str, idade: int, cidade: str = "Manaus") -> str:
return f"{nome}, {idade} anos, mora em {cidade}"
print(criar_perfil("Ana", 25))
# → Ana, 25 anos, mora em Manaus
print(criar_perfil(idade=30, nome="Bruno", cidade="São Paulo"))
# → Bruno, 30 anos, mora em São Paulo
Retornando multiplos valores
Python permite retornar vários valores de uma vez usando tupla:
def calcular_estatisticas(notas: list[float]) -> tuple[float, float, float]:
média: float = sum(notas) / len(notas)
maior: float = max(notas)
menor: float = min(notas)
return média, maior, menor
média, maior, menor = calcular_estatisticas([8.5, 7.0, 9.2, 6.8])
print(f"Media: {média:.1f}") # → Media: 7.9
print(f"Maior: {maior}") # → Maior: 9.2
print(f"Menor: {menor}") # → Menor: 6.8
Exercício prático
Crie funções para um sistema de notas:
calcular_media(notas)-- recebe lista de float, retorna a médiaclassificar(média)-- retorna "Aprovado" se >= 7, senao "Reprovado"exibir_resultado(nome, notas)-- usa as outras duas e imprime o resultado
# 1. def calcular_media(notas: list[float]) -> float:
# 2. def classificar(média: float) -> str:
# 3. def exibir_resultado(nome: str, notas: list[float]) -> None:
# Teste:
# exibir_resultado("Ana", [8.5, 7.0, 9.2])
# → Ana: 8.2 - Aprovado
Referências
- Definindo funções -- documentação oficial Python
- Defining Your Own Python Function -- guia completo no Real Python
- Curso Python #16 - Funções (Parte 1) -- Curso em Video
Testa o que você leu
4 perguntas sobre esta aula. Errar aqui não custa nada - a explicação vem junto da correção.