Descubra as principais Funções do Python!
Neste post veremos algumas das principais funções do Python, desde as mais básicas até algumas mais avançadas que vão mudar a maneira como você escreve seus códigos!
O que você vai ver aqui?
As principais funções nativas do Python são print() (exibir dados), help() (ver documentação), range() (gerar sequências), map() e filter() (transformar e filtrar listas), sum() (somar), sorted() (ordenar), enumerate() (percorrer com índice), zip() (combinar listas) e open() (abrir arquivos). Elas já vêm com a linguagem e cobrem grande parte das tarefas do dia a dia, sem precisar instalar nada.
Domine as 10 Principais Funções
Conheça as 10 funções do Python que são indispensáveis para todo programador! Aprenda a utilizar funções como print(), map() e open() e aprimore seus códigos!
Para fazer o download do(s) arquivo(s) utilizados na aula, preencha com o seu e-mail:
Não vamos te encaminhar nenhum tipo de SPAM! A Hashtag Treinamentos é uma empresa preocupada com a proteção de seus dados e realiza o tratamento de acordo com a Lei Geral de Proteção de Dados (Lei n. 13.709/18). Qualquer dúvida, nos contate.
Introdução - Funções em Python
Python é uma linguagem de programação poderosa e versátil, amplamente utilizada por programadores ao redor do mundo.
Conhecida por sua sintaxe simples e clara, o Python pode ser aplicado em diversas áreas, tornando-se uma das linguagens de programação mais populares no mercado de trabalho.
Você pode encontrar Python sendo utilizado em campos como análise de dados, inteligência artificial, desenvolvimento web, automação de tarefas, criação de sistemas e aplicativos, entre outros.
Parte do que torna o Python uma linguagem tão eficiente é o vasto conjunto de funções que ele oferece. Por isso, é fundamental que qualquer programador, desde iniciantes até especialistas, conheça e domine essas funções.
Nesta postagem, vamos explorar 10 das principais funções do Python que você precisa conhecer para aprimorar seus códigos e projetos.
As 10 principais funções
Função print()
A função print() é uma das mais básicas e provavelmente uma das primeiras que você aprendeu ao começar a programar em Python. Essa função é utilizada para exibir informações na tela, seja no terminal ou no console.
A sintaxe do print é bem simples: basta definir entre parênteses o argumento ou valor que desejamos exibir. Esse valor pode ser um texto, um número, uma variável, entre outros.
produto = "iphone"
quantidade_estoque = 200
print("O produto", produto, "tem", quantidade_estoque, "unidades no estoque")
Você pode usar o print para imprimir uma ou mais informações, e além disso, pode personalizá-lo através de alguns parâmetros.
Por padrão, quando a função print recebe mais de uma informação, ela separa esses valores por um espaço.
Através do parâmetro sep, é possível definir o separador entre os itens, permitindo formatar a saída de acordo com a sua necessidade.
produto = "iphone"
quantidade_estoque = 200
print("O produto", produto, "tem", quantidade_estoque, "unidades no estoque", sep=";")
Outro parâmetro que podemos aplicar para personalizar a função print é o end. Esse parâmetro define o que deve ser impresso ao final da string gerada pelo print.
Por padrão, o end é definido como \n, ou seja, ao final de toda chamada de uma função print, ele adicionará uma nova linha.
Por exemplo, para criar uma contagem regressiva, podemos utilizar o caractere especial \r para que, ao invés de pular uma linha a cada nova chamada, o print retorne para o início da linha anterior e sobrescreva a saída.
import time
print("Contagem")
for i in range(5):
print(5 - i, end="\r")
time.sleep(1)
print("Acabou")Dessa forma, ao invés de termos 5 linhas com cada um dos números definidos dentro do loop for, os valores serão substituídos a cada execução, até restar apenas a mensagem "Contagem" e "Acabou".

Leia também: Print no Python – Como Personalizar os Prints
Função help()
A função help() é uma ferramenta indispensável para qualquer programador Python. Essa função fornece acesso rápido à documentação de funções e módulos.
Com ela, você pode entender facilmente e de forma prática o funcionamento de qualquer função, obtendo informações sobre os parâmetros e funcionalidades diretamente no terminal.
help(print)
Essa função também pode ser aplicada em funções criadas por você, desde que, dentro da sua função, você tenha definido uma docstring.
O uso de docstrings em suas próprias funções permite que você documente o que cada função faz, quais parâmetros recebe e o que retorna. Utilizando a função help, você pode visualizar essas informações.
def calcular_imposto(faturamento, taxa):
"""
faturamento (float): o faturamento da empresa que vamos calcular o imposto
taxa (float): a taxa percentual de imposto sobre o faturamento (ex: 0.2)
returns: imposto, faturamento_liquido
imposto (float): valor total do imposto calculado sobre o faturamento
faturamento_liquido (float): quanto sobrou do faturamento depois de descontado o imposto
"""
imposto = faturamento * taxa
return imposto, faturamento - imposto
help(calcular_imposto)
Isso é extremamente útil quando você está trabalhando em um projeto extenso e precisa relembrar o que um determinado parâmetro ou função faz.
Função range()
A função range() é essencial para gerar intervalos numéricos, sendo amplamente utilizada em loops.
Ela permite criar sequências personalizadas, como contagens crescentes, decrescentes, e com passos específicos. Vamos ver um exemplo de uso dessa função para gerar uma lista.
lista = list(range(5))
print(range(5))
print(lista)
Perceba que range(5) gera os números de 0 a 4, pois o primeiro número é incluído, mas o último não, seguindo o mesmo padrão de funcionamento das listas em Python.
É possível personalizar o intervalo com diferentes valores iniciais e finais. Por exemplo, range(1, 6) gera os números de 1 a 5.
lista = list(range(1, 6))
print(lista)
Além disso, essa função pode receber um terceiro parâmetro, o step, que define o passo da contagem. Por exemplo, um step de 2 permite contar de dois em dois.
lista = list(range(1, 10, 2))
print(lista)
Esse parâmetro também pode ser negativo, permitindo uma contagem regressiva.
lista = list(range(5, 0, -1))
print(lista)
Função map()
Com a função map(), você pode aplicar uma função específica a todos os itens de uma lista ou iterável. Essa função recebe como parâmetros a função que deve ser aplicada e a coleção correspondente.
Por exemplo, considere uma função que calcula aumentos salariais com base em duas regras específicas: salários acima de R$3.000 recebem um aumento de 8%, enquanto os abaixo recebem 10%.
A função map consegue aplicar a função de cálculo a cada item da lista fornecida. O resultado é um objeto do tipo map, que pode ser convertido em uma lista utilizável com a função list().
salarios = [1000, 5000, 7000, 850]
def aumentar_salario(salario):
if salario > 3000:
novo_salario = salario * 1.08
else:
novo_salario = salario * 1.1
return novo_salario
novos_salarios = list(map(aumentar_salario, salarios))
print(novos_salarios)
Isso é particularmente útil quando combinado com expressões lambda, simplificando o código e tornando-o mais legível.
salarios = [1000, 5000, 7000, 850]
novos_salarios = list(map(lambda x: x * 1.1, salarios))
print(novos_salarios)
Saiba mais: Map no Python – O que é e como funciona?
Função filter()
A função filter() é semelhante à map(), mas em vez de aplicar uma função a todos os elementos de uma lista, ela filtra esses elementos com base em uma condição específica definida por uma função.
Essa função recebe como parâmetros uma função e uma lista, retornando apenas os elementos para os quais a função avalia como verdadeiro. Se a condição for satisfeita, o item é incluído na nova lista; caso contrário, não é incluído.
Por exemplo, vamos utilizar uma função lambda para filtrar os salários da lista que são maiores que R$2.000.
salarios = [1000, 5000, 7000, 850]
salarios_altos = list(filter(lambda x: x > 2000, salarios))
print(salarios_altos)
Observe que a função retorna apenas os valores que satisfazem o critério definido. Essa é uma ferramenta poderosa para a filtragem de dados.
Saiba mais: Map e Filter no Python
Função sum()
A função sum() é bastante simples e intuitiva, realizando a soma dos itens de uma lista.
custos = [600, 5000, 350, 4000]
custo_total = sum(custos)
print(custo_total)
No entanto, podemos personalizar o comportamento da função passando o parâmetro start, que permite iniciar a soma a partir de um valor específico. Isso é útil em cenários onde há um valor fixo que deve ser adicionado à soma total.
custos = [600, 5000, 350, 4000]
custo_total = sum(custos, start=1000)
print(custo_total)
Ao usar o parâmetro start, você pode ajustar a soma total conforme necessário.
Função sorted()
A função sorted() é fundamental para ordenar listas e outros iteráveis em Python. Por padrão, a função sorted() ordena os valores em ordem crescente.
salarios = [1000, 5000, 7000, 850]
salarios_ordenados = sorted(salarios)
print(salarios_ordenados)
No entanto, você pode configurá-la para ordenar em ordem decrescente usando o parâmetro reverse=True.
salarios = [1000, 5000, 7000, 850]
salarios_ordenados = sorted(salarios, reverse=True)
print(salarios_ordenados)
Além disso, o parâmetro key permite ordenar listas com base em critérios personalizados, como funções.
Por exemplo, podemos ordenar os salários considerando adicionais e outros benefícios para determinar o salário total de cada funcionário.
salarios = [
(1000, 500, 180),
(5000, 40, 200),
(7000, 0, 0),
(600, 4000, 150)
]
funcionarios_ordenados = sorted(salarios, reverse=True, key=lambda x: sum(x))
print(funcionarios_ordenados)
Função enumerate()
A função enumerate() facilita a iteração sobre listas, fornecendo tanto o índice quanto o valor de cada item. Isso é especialmente útil quando é necessário associar elementos de diferentes listas.
Por exemplo, imagine que você tenha uma lista de salários e outra de funcionários, e deseja imprimir os novos salários junto aos nomes correspondentes.
Usando um loop for, você pode acessar cada salário individualmente. No entanto, para associar corretamente os salários aos funcionários, você também precisa capturar os índices.
Com a função enumerate, ao iterar sobre a lista de salários, você obtém o índice correspondente, que pode ser usado para identificar o funcionário na lista de funcionários, já que as listas estão em ordem correspondente.
salarios = [1000, 5000, 7000, 850]
funcionarios = ["lira", "alon", "amanda", "marcus"]
for i, salario in enumerate(salarios):
funcionario = funcionarios[i]
print("Novo salário do",funcionario, "é", salario * 1.1)
Saiba mais: Enumerate no Python – Loop com índices
Função zip()
Com a função zip(), você pode combinar duas ou mais listas em uma única lista de tuplas, onde cada tupla agrupa elementos correspondentes das listas originais.
Considerando o mesmo exemplo da função enumerate(), com a função zip() é possível associar diretamente funcionários e seus respectivos salários sem precisar gerenciar os índices manualmente.
salarios = [1000, 5000, 7000, 850]
funcionarios = ["lira", "alon", "amanda", "marcus"]
print(list(zip(funcionarios, salarios)))
Podemos exibir o nome e o novo salário dos funcionários assim:
salarios = [1000, 5000, 7000, 850]
funcionarios = ["lira", "alon", "amanda", "marcus"]
for funcionario, salario in zip(funcionarios, salarios):
print("Novo salário do",funcionario, "é", salario * 1.1)
Além disso, podemos usar o resultado da função zip() convertendo-o em um dicionário Python.
Na criação do dicionário, o primeiro valor passado para a função zip se torna a chave (nome do funcionário), enquanto o segundo valor se torna o valor associado (salário).
salarios = [1000, 5000, 7000, 850]
funcionarios = ["lira", "alon", "amanda", "marcus"]
dic_salarios = dict(zip(funcionarios, salarios))
print(dic_salarios)
Função open()
A função open() é essencial para a manipulação de arquivos em Python. Ela permite abrir arquivos para leitura, escrita ou adição de conteúdo, suportando vários modos de abertura e diferentes codificações de texto.
Para abrir um arquivo, especifique o nome do arquivo e o modo de abertura: r para leitura ou w para escrita. O modo w cria um novo arquivo caso ele não exista, ou sobrescreve o conteúdo de um arquivo existente.
Após abrir um arquivo no modo de escrita, é possível adicionar informações, como criar um arquivo de texto com os novos salários dos funcionários.
Feita as edições e operações no arquivo, o comando close deve ser utilizado para fechar e encerrar o arquivo corretamente.
salarios = [1000, 5000, 7000, 850]
funcionarios = ["lira", "alon", "amanda", "marcus"]
arquivo = open("salarios_funcionarios.txt", "w")
for funcionario, salario in zip(funcionarios, salarios):
arquivo.write(f"Novo salário do {funcionario} é {salario * 1.1}\n")
arquivo.close()Executando esse código, teremos o arquivo salarios_funcionarios.txt criado e com as informações registradas.

No entanto, ao usar a função open, por padrão, não há codificação aplicada, o que pode resultar na perda de caracteres especiais, como acentos. Para evitar que isso aconteça, podemos especificar a codificação utilizando o parâmetro encoding.
salarios = [1000, 5000, 7000, 850]
funcionarios = ["lira", "alon", "amanda", "marcus"]
arquivo = open("salarios_funcionarios.txt", "w", encoding="utf-8")
for funcionario, salario in zip(funcionarios, salarios):
arquivo.write(f"Novo salário do {funcionario} é {salario * 1.1}\n")
arquivo.close()
Esse parâmetro é essencial tanto ao escrever quanto ao ler arquivos que contenham caracteres especiais.
arquivo = open("salarios_funcionarios.txt", "r", encoding="utf-8")
texto = arquivo.read()
print("Texto do arquivo:")
print(texto)
arquivo.close()
Um cuidado importante ao usar a função open() é sempre executar o comando close para fechar o arquivo após a leitura ou escrita.
Caso contrário, o arquivo permanecerá aberto na memória do programa, o que pode causar problemas ao tentar reabrir ou modificar o arquivo posteriormente.
Além dos modos de abertura w (escrita) e r (leitura), existe o modo a (adicionar/append). Esse modo permite adicionar conteúdo a um arquivo existente sem substituir o que já está lá, sendo muito útil para manter registros ou logs.
arquivo = open("salarios_funcionarios.txt", "a", encoding="utf-8")
for funcionario, salario in zip(funcionarios, salarios):
arquivo.write(f"Novo salário do {funcionario} é {salario * 1.1}\n")
arquivo.close()
with open("salarios_funcionarios.txt", "r", encoding="utf-8") as arquivo:
texto = arquivo.read()
print("Texto do arquivo:")
print(texto)

Uma abordagem mais recomendada para o gerenciamento de arquivos em Python é o uso da estrutura with. Essa estrutura permite o fechamento automático do arquivo após a execução dos comandos dentro do bloco with, evitando erros no código.
with open("salarios_funcionarios.txt", "r", encoding="utf-8") as arquivo:
texto = arquivo.read()
print("Texto do arquivo:")
print(texto)with open as f
O que é a estrutura with open as f no Python?
É a forma recomendada para abrir e manipular arquivos em Python, como arquivos de texto, CSV ou outros.
Ela garante que o arquivo seja aberto, usado e fechado automaticamente de forma segura, mesmo se ocorrer um erro, evitando problemas como arquivos travados ou conexões abertas. Essa estrutura também é útil para gerenciar outros recursos, como conexões com bancos de dados ou navegadores.
Por que usar with open?
Usar with open traz várias vantagens para gerenciar recursos com segurança:
- Fechamento automático: O arquivo ou recurso é fechado automaticamente ao sair do bloco with, mesmo em caso de erros, eliminando a necessidade de chamar close().
- Prevenção de erros: Evita problemas como arquivos que não podem ser editados por outros programas porque ainda estão abertos.
- Eficiência no código: Simplifica o gerenciamento de recursos, reduzindo linhas de código e possíveis esquecimentos.
- Aplicação ampla: Funciona para arquivos, conexões com bancos de dados, acessos a sites ou automações com navegadores.
Como funciona a estrutura with open?
A estrutura with open segue o formato:
with open('vendas.txt', 'r') as arquivo:
texto = arquivo.read()
print(texto)Aqui, o Python:
- Abre o arquivo vendas.txt no modo leitura ('r').
- Atribui o arquivo à variável arquivo (comumente chamada de f, abreviação de file).
- Executa as ações dentro do bloco (ex.: ler o conteúdo com read()).
- Fecha o arquivo automaticamente ao sair do bloco with.
Quais são os parâmetros do open()?
A função open() aceita dois parâmetros principais:
- Nome do arquivo: Inclui o caminho e a extensão (ex.:
vendas.txtouC:/Users/Joao/Downloads/vendas.txt). Se o arquivo estiver na mesma pasta do código, basta o nome com extensão. - Modo de abertura: Define como o arquivo será usado. Os modos principais são:
- 'r' (leitura): Apenas lê o conteúdo do arquivo. Exemplo: arquivo.read() retorna o texto completo.
- 'a' (append): Adiciona conteúdo ao final do arquivo.
- 'w' (escrita): Cria um novo arquivo ou sobrescreve um existente.
Exemplo modo 'a':
with open('vendas.txt', 'a') as arquivo:
arquivo.write('\nLira,5200')Exemplo modo 'w':
with open('novas_vendas.txt', 'w') as arquivo:
arquivo.write('Lira,5200')Quando usar cada modo
- Use 'r' para ler dados de arquivos existentes, como relatórios ou logs.
- Use 'a' para adicionar dados sem apagar o conteúdo existente, como registrar novas vendas.
- Use 'w' para criar arquivos novos ou substituir o conteúdo de um arquivo existente, como gerar um relatório do zero.
Por que evitar abrir arquivos sem with?
Sem with, você precisa abrir e fechar o arquivo manualmente:
arquivo = open('vendas.txt', 'r')
texto = arquivo.read()
arquivo.close() # Necessário fechar manualmenteSe você esquecer o close(), o arquivo pode permanecer aberto, causando:
- Limites de conexão: Em bancos de dados, pode atingir o limite de conexões abertas.
- Conflitos de acesso: Outros programas ou códigos não conseguirão editar o arquivo.
- Desperdício de recursos: Arquivos abertos consomem memória desnecessariamente.
Como adaptar para outros casos?
Além de arquivos, a estrutura with é usada para gerenciar recursos como:
- Conexões com bancos de dados (ex.: com sqlite3 ou pymysql).
- Abertura de navegadores em automações (ex.: com selenium).
- Requisições a sites ou APIs (ex.: com requests).
Boas práticas com with open:
- Sempre use with open para arquivos, garantindo fechamento automático.
- Nomeie a variável de forma clara (ex.: arquivo em vez de f) para códigos mais legíveis.
- Use o modo correto ('r', 'a', 'w') conforme a necessidade.
- Manipule variáveis derivadas do arquivo (ex.: texto = arquivo.read()) fora do bloco with, mas evite usar a variável arquivo fora do bloco.
Mais algumas funções adicionais
Vamos explorar mais quatro funções poderosas do Python que podem simplificar e tornar seu código ainda mais eficiente: lambda, any, all e f-string.
Cada uma dessas funções tem um propósito específico, desde a criação de funções anônimas rápidas até a formatação de strings de maneira elegante. Compreender como e quando utilizá-las pode melhorar significativamente a legibilidade e a performance do seu código.
Para fazer o download do(s) arquivo(s) utilizados na aula, preencha com o seu e-mail:
Não vamos te encaminhar nenhum tipo de SPAM! A Hashtag Treinamentos é uma empresa preocupada com a proteção de seus dados e realiza o tratamento de acordo com a Lei Geral de Proteção de Dados (Lei n. 13.709/18). Qualquer dúvida, nos contate.
Função lambda
A função lambda permite criar funções anônimas (sem nome) em uma única linha. Ela é útil para operações simples que não requerem uma definição formal com def. Sua sintaxe é:
lambda argumentos: expressão
Exemplo:
dobro = lambda x: x * 2
print(dobro(5)) # Saída: 10Ela é frequentemente usada com funções como map(), filter() e sorted().
Função any()
A função any() retorna True se pelo menos um elemento de um iterável (lista, tupla, etc.) for avaliado como verdadeiro. Caso contrário, retorna False.
valores = [False, True, False]
print(any(valores)) # Saída: TrueÚtil para verificar condições em conjuntos de dados.
Função all()
Diferente do any(), all() retorna True apenas se todos os elementos do iterável forem verdadeiros.
valores = [1, 2, 3, 0]
print(all(valores)) # Saída: False (por causa do 0)Ideal para validações onde todos os valores devem atender a um critério.
f-string
As f-strings (formatted strings) são uma maneira moderna e eficiente de formatar strings no Python (a partir da versão 3.6). Elas permitem incorporar expressões diretamente dentro de strings usando { }.
nome = "Maria"
idade = 30
print(f"{nome} tem {idade} anos.") # Saída: Maria tem 30 anos.Elas são mais legíveis e mais rápidas que métodos antigos como % ou .format().
Saiba mais em:
- With Python – Como Abrir e Fechar Arquivos em Python
- Arquivos de Texto com Python – Ler, Editar e Criar
Perguntas frequentes sobre funções do Python
1. O que são funções no Python?
São blocos de código que executam uma tarefa e podem receber parâmetros e retornar valores. O Python já traz funções nativas (como print e len) e permite criar as suas com def, evitando repetir código.
2. Quais são as funções mais usadas do Python?
Entre as nativas mais usadas estão print(), len(), range(), type(), sum(), sorted(), map(), filter(), enumerate(), zip() e open(). Elas resolvem tarefas comuns de exibição, iteração, cálculo e manipulação de dados.
3. Qual a diferença entre função nativa e função criada?
Função nativa (built-in) já vem com o Python e pode ser usada direto, como print(). Função criada é definida por você com def para atender a uma necessidade específica, encapsulando uma lógica própria.
4. Para que serve a função range() no Python?
A range() gera uma sequência de números, muito usada em laços for. Por exemplo, range(5) produz os números de 0 a 4. É possível definir início, fim e passo, controlando exatamente a sequência gerada.
Conclusão – Funções do Python
Dominar essas funções do Python é essencial para qualquer programador que deseja se tornar profissional nessa linguagem.
Elas não apenas facilitam a execução de tarefas comuns, mas também ajudam a escrever códigos mais limpos, eficientes e legíveis.
Aprender a utilizar essas ferramentas ao máximo permitirá que você aproveite todo o potencial que o Python tem a oferecer.
E se você deseja se tornar um profissional ainda mais capacitado e impressionar no mercado de trabalho, conheça nosso curso completo: Python Impressionador.
Caso prefira esse conteúdo no formato de vídeo-aula, assista aos vídeos abaixo ou acesse o nosso canal do YouTube!
O que você aprende neste vídeo
Resposta rápida: Nesta aula, o instrutor ensina 10 funções obrigatórias do Python que todo programador deveria dominar. Entre elas: print (com os parâmetros end e sep), range (gerar sequências), map (aplicar uma função em cada item de uma lista), filter (filtrar itens por condição), zip (juntar duas listas) e open (ler e escrever arquivos). Ele mostra cada uma com exemplos práticos.
Neste vídeo (35 min):
- 0:00 - As 10 funções que todo programador Python deveria dominar, começando pelo
print(end,sep). - 8:00 -
range: gerar uma sequência de números. - 12:00 -
map: aplicar uma função em cada item de uma lista. - 16:00 -
filter: filtrar os itens de uma lista por uma condição. - 20:00 -
zip: juntar duas listas (ex.: funcionários e salários) num dicionário. - 32:00 -
open: ler e escrever arquivos (o modo de adicionar em vez de substituir).
Hashtag Treinamentos
Para acessar outras publicações de Python, clique aqui!
Posts mais recentes de Python
- Curso Básico de Python: Saia do Zero em 10 Aulas GrátisAprenda com o curso básico de Python gratuito da Hashtag: 10 aulas práticas, exercícios e projetos reais para sair do zero em programação.
- Agentes RAG com Python: como criar um assistente de IAAprenda a criar Agentes RAG com Python do zero: LangChain, FAISS e OpenAI para montar um assistente de IA que responde com base nos seus documentos.
- 25 Tipos de Gráficos em Python: Guia Completo com CódigoAprenda a criar os principais tipos de gráficos em Python com Plotly: barras, pizza, mapas e mais, com código pronto para copiar e usar.
Posts mais recentes da Hashtag Treinamentos
- Planilha de Controle de Notas Fiscais no Excel [Grátis]Baixe a planilha de controle de notas fiscais no Excel grátis: calcule ISS e retenções, veja o que está em aberto e gere a cobrança de cada nota de serviço.
- Qual IA usar na empresa: ChatGPT, Claude ou Perplexity?Qual IA usar na empresa: veja as diferenças entre ChatGPT, Claude e Perplexity e quando cada um rende mais em cada área da sua equipe.
- Apostilas Gratuitas em PDF: Excel, Power BI, Python e IABaixe apostilas gratuitas em PDF de Excel, Power BI, Python, Claude e agentes de IA, com exercícios e gabarito. Escolha a sua e comece hoje.








