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:

  1. Ela pode receber informações de entrada, que chamamos de parâmetros;
  2. Ela executa um bloco de código, o processamento;
  3. 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 def colocamos 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 if e no for, 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() e range() 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 if e for.
  • 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ê.