O que são funções
Entenda funções como pequenas máquinas que recebem algo, trabalham e devolvem um resultado.
Você já usa funções há muito tempo!
Aqui vai uma novidade que vai te surpreender: você já está usando funções desde as primeiras lições deste curso.
Lembra do print()? E do input()? E do len()? Todos eles são funções. Funções que o próprio Python já deixou prontas para você usar. Você só precisava chamá-las pelo nome e passar as informações necessárias entre os parênteses.
Veja só quantas funções você já conhece:
| Função | O que ela faz |
|---|---|
print() |
Exibe uma mensagem na tela |
input() |
Lê o que o usuário digita |
len() |
Conta quantos itens há em uma lista ou string |
int() |
Converte um valor para número inteiro |
float() |
Converte um valor para número decimal |
str() |
Converte um valor para texto |
range() |
Gera uma sequência de números |
type() |
Revela o tipo de dado de uma variável |
Você já usou todas essas! Agora chegou a hora de entender o que é uma função de verdade e aprender a criar as suas próprias.
O que é uma função?
Pense em uma máquina de suco:
- você coloca a fruta (a entrada);
- ela espreme o suco (faz o processamento);
- ela entrega o suco pronto (a saída).
Você não precisa saber como o motor funciona por dentro, só precisa saber o que colocar e o que vai sair.
Uma função em programação funciona exatamente assim:
- Ela pode receber informações de entrada, que chamamos de parâmetros;
- Ela executa um bloco de código, o processamento;
- Ela pode devolver um resultado para você usar, a saída.
A grande vantagem é que você escreve o código uma vez e pode usar quantas vezes quiser, em qualquer lugar do programa, sem precisar repetir tudo de novo.
Por que criar funções?
Imagine que você precisa exibir uma saudação personalizada para vários usuários ao longo do programa. Sem funções, você repetiria o mesmo bloco de código diversas vezes:
# Sem função: repetição desnecessária
nome1 = "Ana"
print("Olá,", nome1 + "!")
print("Bem-vindo(a) ao sistema!")
nome2 = "Carlos"
print("Olá,", nome2 + "!")
print("Bem-vindo(a) ao sistema!")
nome3 = "Beatriz"
print("Olá,", nome3 + "!")
print("Bem-vindo(a) ao sistema!")
Com uma função, você escreve a lógica uma vez e reutiliza para sempre:
# Com função: escreva uma vez, use sempre
def saudar(nome):
print("Olá,", nome + "!")
print("Bem-vindo(a) ao sistema!")
saudar("Ana")
saudar("Carlos")
saudar("Beatriz")
Saída:
Olá, Ana!
Bem-vindo(a) ao sistema!
Olá, Carlos!
Bem-vindo(a) ao sistema!
Olá, Beatriz!
Bem-vindo(a) ao sistema!
Muito mais limpo, não é? Isso é o que os programadores chamam de não se repetir e funções são a ferramenta principal para isso.
Como criar uma função
Para criar (ou definir) uma função no Python:
- começamos com a palavra reservada
def(abreviação de define, definir em inglês); - logo após a palavra
defcolocamos o nome da função; - em seguida, abrimos parênteses
(). Dentro dos parênteses podemos passar os parâmetros (entrada) da função, mas isso não é obrigatório; - após o fechamento dos parênteses, usamos dois pontos
:(como no if, elif, while e for);
Veja um exemplo:
def dizer_oi(): # função sem parâmetros
print("Oi! Tudo bem?") # código que a função executa
dizer_oi()
dizer_oi()
dizer_oi()
Saída:
Oi! Tudo bem?
Oi! Tudo bem?
Oi! Tudo bem?
Atenção à indentação! Assim como no
ife nofor, o código que fica dentro da função precisa estar indentado (com um recuo de 4 espaços). O Python usa isso para saber onde a função começa e onde ela termina.
Regras para nomear funções
O Python tem algumas regrinhas para os nomes das funções. Seguir essas regras evita erros e deixa o código muito mais fácil de entender.
São as mesmas regras que seguimos para montar nomes de variáveis.
Use letras minúsculas e underline para separar palavras
No Python, a convenção é usar o estilo snake_case (tudo em letras minúsculas, com as palavras separadas por underline _).
# Bom — snake_case, clara e descritiva
def calcular_media():
# código que a função executa
# Evite — difícil de ler
def CalcularMedia(): # esse estilo (CamelCase) é usado para classes (veremos no futuro), não para funções
# código que a função executa
def exibirresultado(): # sem separação, difícil de ler
# código que a função executa
Comece sempre com uma letra ou underline
O nome da função não pode começar com um número. Pode começar com qualquer letra (maiúscula ou minúscula) ou com underline _.
# Correto
def calcular_idade():
# código que a função executa
# Errado — começa com número
def 2calcular(): # SyntaxError!
# código que a função executa
Use apenas letras, números e underline
Espaços e símbolos especiais como -, !, @, # não são permitidos no nome de funções.
# Correto
def enviar_email():
# código que a função executa
# Errado — hífen não é permitido
def enviar-email(): # SyntaxError!
# código que a função executa
Não use palavras reservadas do Python
Palavras como if, for, while, def, print, True, False têm um papel especial na linguagem e não podem ser usadas como nome de função.
# Errado — 'print' e 'if' são palavras reservadas
def print():
# código que a função executa
def if():
# código que a função executa
Escolha nomes que descrevam o que a função faz
Uma boa função tem um nome que já entrega o que ela faz, geralmente começando com um verbo.
# Nomes descritivos e com verbo, excelente!
def calcular_desconto():
# código que a função executa
def exibir_boas_vindas():
# código que a função executa
def verificar_idade():
# código que a função executa
# Nomes vagos, evite
def funcao1():
# código que a função executa
def f():
# código que a função executa
Um bom teste: se alguém ler o nome da sua função sem ver o código interno, já deve entender o que ela faz. Se isso não acontece, o nome pode melhorar!
Definir ≠ executar
Um erro muito comum de quem está aprendendo é achar que definir a função já a executa. Não é assim.
Definir a função é como escrever a receita no caderno.
def nome_da_funcao():
# código que irá executar
Chamar a função é como cozinhar a receita de verdade.
nome_da_funcao()
Se você definir a função mas nunca chamá-la, nada acontece na tela:
# Apenas define — não executa nada ainda
def mostrar_mensagem():
print("Esta mensagem só aparece quando eu for chamada!")
# Somente aqui a função é executada
mostrar_mensagem()
O que aprendemos nesta lição
Nesta lição, você aprendeu que:
- Funções como
print(),input(),len(),int()erange()são funções nativas do Python que você já usa há várias lições. - Uma função é um bloco de código reutilizável com um nome — como uma máquina que executa uma tarefa sempre que você a aciona.
- Criamos nossas próprias funções com a palavra-chave
def, seguida do nome da função e parênteses. - Definir uma função não a executa — para executá-la, precisamos chamá-la pelo nome com parênteses.
- O código dentro da função deve estar indentado (com recuo), assim como nos blocos
ifefor. - Nomes de funções precisam seguir regras, assim como nomes de variáveis.
Nas próximas lições, vamos aprofundar: como passar informações para dentro de uma função (parâmetros) e como fazer a função devolver um resultado para você.