Aula 05: Modularização com Funções
Objetivos de Aprendizagem
Ao final desta aula, você deve ser capaz de:
- Definir e chamar funções com
def. - Usar parâmetros e argumentos para tornar funções reutilizáveis.
- Diferenciar função que imprime de função que retorna valor.
- Aplicar noções básicas de escopo local.
- Organizar código em funções curtas e com nomes descritivos.
Conteúdo
1) O que é uma função
Uma função é um bloco de código reutilizável que executa uma tarefa específica.
def saudacao():
print("Olá, turma!")
saudacao()
Anatomia de uma função
Cada função em Python possui componentes estruturados. Observe o diagrama abaixo:
Os componentes principais são:
def: palavra-chave que define uma função- Nome da função: identificador descritivo (
calcular_media,saudar, etc.) - Parâmetros: variáveis entre parênteses que recebem valores
- Corpo (indentado): bloco de código que executa a lógica da função
- Return: entrega um valor de volta para quem chamou a função
No exemplo do diagrama, calcular_media(n1, n2) recebe dois parâmetros e retorna o resultado da média. Quando você chama calcular_media(8.0, 6.0), o valor 7.0 é devolvido e armazenado na variável media.
2) Parâmetros e argumentos
Parâmetros são variáveis declaradas na função. Argumentos são os valores passados na chamada.
def saudacao_nome(nome):
print(f"Olá, {nome}!")
saudacao_nome("Ana")
saudacao_nome("Carlos")
Passagem de parâmetros
A relação entre argumentos (valores passados) e parâmetros (variáveis da função) é ilustrada abaixo:
Como funciona:
- Na chamada (esquerda): você fornece argumentos — os valores reais, como
8.0e6.0 - Na definição (direita): você declara parâmetros — variáveis que recebem esses valores (
n1,n2) - Correspondência: o primeiro argumento se conecta ao primeiro parâmetro, o segundo ao segundo, e assim por diante
- Retorno: a função processa e devolve um valor (no caso,
7.0)
3) Funções com retorno (return)
Use return quando a função precisa entregar um valor para ser usado depois.
def soma(a, b):
return a + b
resultado = soma(10, 7)
print(f"Resultado: {resultado}")
Diferença entre print e return
def mostra_soma(a, b):
print(a + b)
def retorna_soma(a, b):
return a + b
x = mostra_soma(2, 3) # imprime 5, mas x recebe None
y = retorna_soma(2, 3) # y recebe 5
print(x)
print(y)
4) Escopo local (introdução)
Variáveis criadas dentro da função são locais da função.
def exemplo_escopo():
mensagem = "Estou dentro da função"
print(mensagem)
exemplo_escopo()
# print(mensagem) # geraria erro: NameError
Escopo local vs. escopo global
O diagrama abaixo mostra a diferença entre variáveis globais e locais:
Entendendo o exemplo:
- Escopo global (fora das funções):
x = 10é acessível em qualquer lugar do código - Escopo local da função (dentro de
minha_funcao):mensagem = "Olá!"existe apenas enquanto a função está sendo executada - Erro de acesso: tentar usar
mensagemfora da função causaNameErrorporque ela não foi definida no escopo global
Regra importante: uma variável definida dentro de uma função é local; não pode ser usada fora dela a menos que seja retornada ou definida globalmente.
5) Boas práticas de modularização
- Dê nomes claros para funções (
calcular_media,validar_idade). - Prefira funções curtas com uma responsabilidade.
- Evite duplicar código: extraia lógica repetida para função.
- Use parâmetros em vez de valores fixos quando possível.
6) Exemplos contextualizados
Exemplo A: cálculo de média com função
def calcular_media(n1, n2, n3):
return (n1 + n2 + n3) / 3
media = calcular_media(8.0, 7.5, 9.0)
print(f"Média: {media:.2f}")
Saída esperada: Média: 8.17
Exemplo B: mensagem de aprovação
def aprovado(media):
return media >= 6
resultado = aprovado(5.9)
print(f"Aprovado? {resultado}")
Saída esperada: Aprovado? False
Exercícios (checkpoints)
- Crie uma função
dobro(numero)que retorna o dobro do valor recebido.- Critério de verificação: para
dobro(7), o resultado deve ser14.
- Critério de verificação: para
- Escreva uma função
saudar(nome)que imprime uma saudação personalizada.- Critério de verificação: para
saudar("Lia"), a saída deve conterLia.
- Critério de verificação: para
- Crie uma função
media(n1, n2)comreturn.- Critério de verificação: para
media(8, 6), o resultado deve ser7.0.
- Critério de verificação: para
- Reescreva um trecho repetido do seu código anterior usando função.
- Critério de verificação: o comportamento final deve permanecer igual.
- Faça uma função
pode_votar(idade)que retornaTrueseidade >= 16.- Critério de verificação: para
15, deve retornarFalse.
- Critério de verificação: para
- Crie uma função que receba preço e desconto percentual e retorne o preço final.
- Critério de verificação: para
100e10, o resultado deve ser90.
- Critério de verificação: para
Referências
Principais
- Python Docs — Defining Functions: https://docs.python.org/3/tutorial/controlflow.html#defining-functions
- Python Docs — More on Defining Functions: https://docs.python.org/3/tutorial/controlflow.html#more-on-defining-functions
Aprofundamento
- Real Python — Defining Your Own Python Function: https://realpython.com/defining-your-own-python-function/
- Real Python — Python Scope: https://realpython.com/python-scope-legb-rule/