O que é função em Python? Como criar e usar, com exemplos
Função é um bloco de código com nome que você escreve uma vez e usa quantas vezes quiser. Em Python, cria-se com def, recebe valores chamados parâmetros e pode devolver um resultado com return. Por exemplo, def area(base, altura): return base * altura cria uma função chamada area.
A ideia: uma receita com nome
Pense numa receita de bolo. Você escreve os passos uma vez e usa sempre que quiser bolo, mudando só os ingredientes. A função faz o mesmo no código: você escreve os passos uma vez, dá um nome e chama esse nome sempre que precisar. Isso evita repetir código e deixa os programas mais fáceis de ler e de consertar.
Criando e chamando uma função
Você cria com a palavra def, o nome, parênteses e dois-pontos. O código da função fica recuado logo abaixo:
def saudacao(nome):
return f"Olá, {nome}!"
print(saudacao("Ana"))
print(saudacao("Bia"))
Olá, Ana!
Olá, Bia!
Cada parte tem um papel:
defavisa que vai definir uma função.saudacaoé o nome que você escolheu.(nome)é o parâmetro: o espaço onde entra o valor que quem chama passa.returndevolve o resultado para quem chamou a função.
Escrever saudacao("Ana") é chamar a função. O valor "Ana" que vai entre os parênteses é o argumento.
Mais de um parâmetro
Separe os parâmetros por vírgula:
def area_retangulo(base, altura):
return base * altura
print(area_retangulo(4, 3))
12
A ordem importa: o primeiro valor vai para base e o segundo para altura.
Valor padrão
Um parâmetro pode ter um valor padrão, usado quando você não passa nada naquela posição:
def desconto(valor, percentual=10):
return valor - valor * percentual / 100
print(desconto(200))
print(desconto(200, 25))
180.0
150.0
Sem o segundo argumento, o desconto é de 10%. Com 25, o padrão é ignorado. O resultado aparece com .0 porque a divisão em Python devolve um número com decimais.
print ou return? A diferença que confunde todo mundo
O print mostra algo na tela. O return devolve um valor para o resto do programa usar. Veja a diferença:
def mostra(x):
print(x * 2)
def devolve(x):
return x * 2
a = mostra(5)
b = devolve(5)
print(a, b)
10
None 10
O 10 sozinho veio do print dentro de mostra, que só mostra e não devolve nada. Por isso a ficou com None, que significa "nada". Já b guardou o 10 devolvido, e dá para usar em contas. Quando você precisa do resultado depois, use return.
Para que servem as funções, na prática
- Reaproveitar: a mesma conta usada em vários lugares fica escrita uma vez.
- Organizar: um programa grande vira vários pedaços pequenos com nomes claros.
- Testar e corrigir: se há um erro, você sabe em qual função procurar.
Boas práticas de quem está começando
- Dê nomes que dizem o que a função faz:
calcular_descontoé melhor quef1. - Faça cada função cuidar de uma tarefa.
- Escreva em minúsculas, com traço baixo entre as palavras.
- Lembre que variáveis criadas dentro de uma função só existem lá dentro. Isso se chama escopo.
Erros comuns com funções
- Esquecer os parênteses ao chamar.
saudacaosem parênteses só aponta para a função, esaudacao("Ana")executa. - Esquecer o return e receber
None. - Esquecer o recuo dentro da função, o que gera
IndentationError. Veja como ler esse erro em como ler uma mensagem de erro em Python. - Passar a quantidade errada de argumentos, o que gera
TypeError.
Crie a sua função de desconto
Rode o código. Depois crie uma função juros com dois parâmetros, o valor e a taxa, que devolva o valor com a taxa aplicada, e teste com três números diferentes.
def desconto(valor, percentual=10):
return valor - valor * percentual / 100
print(desconto(200))
print(desconto(200, 25))
Resultado esperado:
180.0
150.0
A função calcula o valor menos o percentual. Quando você passa só o primeiro argumento, vale o padrão de 10%. Quando passa o segundo, ele substitui o padrão.
Perguntas frequentes
Qual a diferença entre parâmetro e argumento?
Parâmetro é o nome que aparece na definição da função (def saudacao(nome)). Argumento é o valor que você passa ao chamar (saudacao("Ana")).
Toda função precisa de return?
Não. Uma função pode apenas executar uma ação, como mostrar algo na tela. Sem return, ela devolve None.
Qual a diferença entre função e método?
Método é uma função que pertence a um tipo de dado, e se chama com ponto, como em "texto".upper(). Já uma função solta, como len("texto"), não tem ponto na frente.
Uma função pode chamar outra função?
Pode, e isso é muito comum. É assim que programas grandes são montados a partir de pedaços pequenos.
Fontes e para saber mais
Próximo passo da trilhaComo ler uma mensagem de erro em Python sem pânico (com exemplos reais)