O Python 2 foi lançado em 2000 e, por muito tempo, serviu como a principal ferramenta para milhões de desenvolvedores em todo o mundo. Em 2008, surgiu uma versão radicalmente nova — o Python 3, que trouxe melhorias significativas na arquitetura da linguagem.
O Python 3 não era totalmente compatível com o Python 2, o que gerou debates na comunidade de desenvolvedores e atrasou sua adoção em massa. No entanto, ao longo de mais de 15 anos, o Python 3 se tornou o padrão absoluto da indústria.
História do surgimento do Python 3
A criação do Python 3 foi motivada pela necessidade de corrigir falhas arquiteturais fundamentais do Python 2, que estavam travando a evolução da linguagem:
Melhor suporte a Unicode — o Python 3 trabalha com strings Unicode por padrão, algo essencial para aplicações multilíngues modernas.
Otimização no trabalho com tipos de dados — uma separação mais clara entre bytes e strings, eliminando ambiguidades na tipagem.
Unificação de sintaxe e semântica — remoção de inconsistências na linguagem, criando uma estrutura mais lógica e previsível.
Principais diferenças entre Python 2 e Python 3
Trabalhando com texto e codificações
Python 2:
print type("texto") # <type 'str'>
print type(u"texto") # <type 'unicode'>
Python 3:
print(type("texto")) # <class 'str'> - Unicode por padrão
print(type(b"texto")) # <class 'bytes'>
O Python 3 tem suporte nativo a Unicode, resolvendo muitos problemas de codificação comuns no Python 2.
Operações matemáticas
Python 2:
print 5 / 2 # 2 (divisão inteira)
print 5.0 / 2 # 2.5 (divisão com ponto flutuante)
Python 3:
print(5 / 2) # 2.5 (divisão real)
print(5 // 2) # 2 (divisão inteira)
No Python 3, o operador / sempre retorna um resultado de ponto flutuante, tornando o comportamento mais previsível.
Mudanças sintáticas
Função print:
# Python 2
print "Olá, mundo!"
# Python 3
print("Olá, mundo!")
Função input:
# Python 2
nome = raw_input("Digite seu nome: ") # string
idade = input("Digite sua idade: ") # executa eval()
# Python 3
nome = input("Digite seu nome: ") # sempre string
idade = int(input("Digite sua idade: ")) # conversão explícita
Iteradores e geradores
Python 2:
range(5) # retorna uma lista [0, 1, 2, 3, 4]
xrange(5) # retorna um gerador
chaves = dict.keys() # retorna uma lista
Python 3:
range(5) # retorna um gerador
list(range(5)) # [0, 1, 2, 3, 4]
chaves = dict.keys() # retorna uma visão do dicionário
Estado atual do suporte às versões
Fim do suporte ao Python 2
Em 1º de janeiro de 2020, a Python Software Foundation encerrou oficialmente o suporte ao Python 2.7. Isso significa:
- Sem atualizações de segurança
- Fim do desenvolvimento de novos recursos
- Sem correções para bugs críticos
- Fim do suporte pelas principais bibliotecas
Desenvolvimento ativo do Python 3
O Python 3 continua evoluindo ativamente com atualizações regulares:
- Python 3.12 (2023) — melhorias de desempenho e novos recursos de tipagem
- Python 3.13 (2024) — compilador JIT experimental