Python: do script ao servidor
Um arquivo de texto com três linhas dentro já é um programa em Python que roda. O mesmo comando que executa esse arquivo sobe um servidor HTTP na sua máquina, sem instalar pacote nenhum. As duas coisas cabem nos dez minutos desta página.
O que o Python resolve
Boa parte do trabalho de servidor é curta: ler um arquivo, chamar uma API de fora, transformar o dado e devolver uma resposta. Quando a linguagem exige criar projeto, escolher template, rodar build e mexer em arquivo de configuração antes da primeira linha, você gasta mais tempo montando o andaime do que resolvendo o problema. Em Python o arquivo com o código já é o programa, e rodar é um comando com o nome do arquivo.
A segunda dor aparece depois. O script que você escreveu pra resolver uma coisa sua costuma morrer quando outras pessoas precisam usar aquilo, porque virar serviço significa reescrever tudo em outro lugar. Em Python o caminho é contínuo. A mesma função que você chamou no terminal passa a ser chamada por um framework web, e depois roda atrás de um endereço público, com a lógica intacta no meio.
Os conceitos que você precisa antes da primeira linha
- Interpretador e o nome do comando. O programa que lê seu arquivo e executa linha a linha chama interpretador. No Linux e no macOS ele atende por
python3. No Windows a documentação oficial usa o comandopy, que escolhe entre as versões instaladas na máquina. O comandopython, sem o 3, pode não existir ou apontar pra outra coisa. - A indentação faz parte da sintaxe. Na maioria das linguagens o recuo serve pra leitura humana e o que delimita bloco é a chave. Em Python o recuo é o bloco. Misturar quatro espaços com três dentro do mesmo trecho quebra o programa antes de ele começar, com um erro chamado
IndentationError. - Módulo e a opção
-m. Todo arquivo.pyé um módulo. A opção-mmanda o interpretador executar um módulo pelo nome dele, em vez de por caminho de arquivo. É assim que o servidor do passo 6 sobe, e é o mesmo mecanismo que roda várias ferramentas que vieram junto com o Python. - Biblioteca padrão. A instalação já traz um conjunto grande de módulos prontos: leitura de arquivo, JSON, data e hora, cliente HTTP e um servidor HTTP simples, entre muitos outros. Um programa que só usa esses módulos roda em qualquer máquina com Python, sem instalar nada por fora.
- Ambiente virtual e
pip. Quando o projeto precisar de código de terceiros, opipbaixa do PyPI e o comandopython3 -m venv .venvcria uma pasta isolada pra guardar essas dependências, ativada comsource .venv/bin/activate. O passo a passo abaixo não usa nenhum dos dois, de propósito.
A linguagem por dentro: tipos, funções e objetos
Python tem tipagem dinâmica e forte: você não declara tipo, mas o interpretador não converte por conta própria. Somar texto com número dá TypeError na hora, em vez de um resultado esquisito. E tudo é objeto: até um número inteiro tem métodos.
- Os tipos do dia a dia:
int,float,str,bool(True/Falsecom maiúscula),Nonepro vazio,listpra sequência que muda,tuplepra sequência que não muda edictpra pares chave-valor. - Função se declara com
defe aceita argumento com nome na chamada:enviar(destino, copia=True)se lê sozinho seis meses depois. - Orientação a objetos:
classdefine o molde,__init__é o construtor eselfé o próprio objeto, escrito explicitamente como primeiro parâmetro de cada método. Herança éclass Filha(Mae).
# tipos, função e classe em doze linhas
precos = [12.5, 30, 7] # list
total = sum(precos)
def formata(valor): # função
return f"R$ {valor:.2f}" # f-string
class Carrinho: # orientação a objetos
def __init__(self):
self.itens = []
def add(self, item):
self.itens.append(item)
print(formata(total)) # R$ 49.50
Repare no que não existe: chave, ponto e vírgula, tipo declarado. O recuo delimita os blocos, como a seção anterior explicou.
Hello world: um script que imprime e um servidor que responde
Tudo roda no terminal, em Linux, macOS ou Windows. A versão estável em vigor é a 3.14.7, publicada em 05/08/2026, e qualquer 3.x recente serve pro que vem abaixo.
-
Confira o interpretador que você tem:
python3 --versionA resposta tem que ser um número começando em
3. No Windows, troquepython3porpyem todos os comandos desta página. Se o terminal disser que o comando não existe, instale pela página oficial de download antes de seguir. -
Crie uma pasta pro exercício e entre nela. Isso importa porque o servidor do passo 6 entrega os arquivos da pasta em que você estiver:
mkdir ola-python cd ola-python -
Num editor de texto, crie o arquivo
ola.pydentro dessa pasta, com este conteúdo:nome = "mundo" print(f"Olá, {nome}") for n in range(1, 4): print(f"linha {n}")Os quatro espaços antes do segundo
printsão o que coloca ele dentro do laço. Sem esse recuo o programa não roda. -
Rode o script:
python3 ola.py -
Na mesma pasta, crie o arquivo
index.html, pro servidor ter o que entregar na raiz:<!DOCTYPE html> <html lang="pt-BR"> <head><meta charset="UTF-8" /><title>Servido pelo Python</title></head> <body><h1>Esta página saiu de um servidor Python</h1></body> </html> -
Suba o servidor da biblioteca padrão:
python3 -m http.server 8000 --bind 127.0.0.1O
8000é a porta, que já seria o padrão. O--bind 127.0.0.1prende o servidor à sua própria máquina, e vale escrever ele sempre: sem essa opção o padrão documentado é atender por todas as interfaces de rede, o que expõe a pasta pra quem estiver na mesma rede que você. -
Com o servidor de pé, abra
http://127.0.0.1:8000/no navegador. -
Pra encerrar, volte na janela do servidor e aperte Ctrl + C.
Olá, mundo seguido de linha 1, linha 2 e linha 3, e devolve o prompt logo depois. Se aparecer IndentationError, o recuo antes do segundo print está errado, e é só isso. No passo 6, a janela mostra Serving HTTP on 127.0.0.1 port 8000 (http://127.0.0.1:8000/) ... e o prompt fica parado, sem voltar. Prompt travado é o sinal certo aqui: o processo está de pé, esperando pedido. No navegador, o endereço mostra "Esta página saiu de um servidor Python" em corpo grande, e a aba mostra "Servido pelo Python". Volte na janela do servidor e você vai ver uma linha nova de registro, no formato 127.0.0.1 - - [data] "GET / HTTP/1.1" 200 -. Esse 200 é o servidor dizendo que achou e entregou o arquivo. Se o navegador acusar falha de conexão, olhe a janela do servidor: com a porta 8000 já ocupada por outro programa, o Python reclama na hora de subir e o processo morre. Troque o número por 8001 e rode de novo.O que o Python não é
O http.server do passo 6 não serve pra colocar site no ar. A documentação oficial abre a página desse módulo com um aviso: ele não é recomendado para produção, e implementa apenas verificações básicas de segurança. Ele existe pra você conferir arquivo estático na sua máquina enquanto desenvolve, e é ótimo nisso. Publicar com ele é o erro clássico de quem viu o comando funcionar e achou que estava pronto.
A confusão maior é achar que o Python traz framework web dentro. A biblioteca padrão vai até esse servidor simples e até o wsgiref, que a própria documentação marca como implementação de referência fora de produção. Aplicação web em Python usa framework instalado à parte, com Django, Flask e FastAPI entre os nomes mais usados, e o encaixe entre framework e servidor tem um padrão com nome próprio, o WSGI, definido na PEP 3333. Escolher esse framework é o passo seguinte, depois que o servidor da biblioteca padrão já respondeu na sua tela.
Fontes
- Documentação oficial, módulo
http.server, de onde saíram a chamadapython -m http.server, a porta padrão 8000, a opção--binde o aviso de que o módulo não é recomendado para produção. Conferida em 15/08/2026. - Documentação oficial, invocando o interpretador, com o nome do comando no Unix, a execução de um arquivo pelo nome e a opção
-m. Conferida em 15/08/2026. - Documentação oficial, Python no Windows, onde o comando
pye o Python Install Manager estão descritos, com o antigopy.exemarcado como obsoleto a partir do 3.14. Conferida em 15/08/2026. - Documentação oficial, módulo
venv, de onde vieram os comandos de criar e ativar o ambiente virtual. Conferida em 15/08/2026. - Documentação oficial, módulo
wsgiref, com a definição de WSGI, a referência à PEP 3333 e o aviso de que o módulo é implementação de referência. Conferida em 15/08/2026. - Página oficial de download, que marca a 3.14.7 como versão estável em vigor, publicada em 05/08/2026. Conferida em 15/08/2026.
Rodamos este hello world na nossa máquina em 15/08/2026, num Linux com Python 3.14.4. O python3 ola.py imprimiu as quatro linhas descritas acima. O python3 -m http.server 8000 --bind 127.0.0.1 subiu com a mensagem Serving HTTP on 127.0.0.1 port 8000, devolveu HTTP/1.0 200 OK com o cabeçalho Server: SimpleHTTP/0.6 Python/3.14.4 e entregou o index.html inteiro, e a janela do servidor registrou a linha "GET / HTTP/1.1" 200 -.
Para continuar
Do lado do back end, a linguagem é escolha. Node.js resolve o mesmo problema com o JavaScript que você já usa no navegador, e também sobe um servidor com o que vem na instalação. PHP chega por outro caminho, montando a página dentro do servidor a cada pedido que o navegador faz. Os três estão lado a lado no mapa da stack web, junto do resto da trilha.
O curso desta trilha está em preparação. A lista paga menos.
Os tutoriais daqui continuam gratuitos. O que está a caminho é um curso pago que transforma esse mapa em formação guiada, na ordem certa e com projeto. Deixe seu e-mail: você recebe os estudos novos gratuitos e, no lançamento, o desconto de quem entrou na lista primeiro.