O Python, mesmo tendo sido lançado há mais de três décadas, continua sendo uma linguagem de programação extremamente popular, apreciada tanto por programadores experientes quanto por iniciantes na área.
Os índices PYPL e TIOBE, ambos reconhecidos na indústria, posicionam o Python como a linguagem mais utilizada globalmente em outubro de 2023.
A Pesquisa de Desenvolvedores do Stack Overflow de 2022 também destaca o Python como a segunda linguagem mais desejada. Consequentemente, qualquer desenvolvedor que opte por aprender e empregar o Python se beneficiará significativamente em termos de oportunidades de trabalho e progressão na carreira.
Entretanto, após escolher o Python como sua linguagem de programação preferida, outra questão crucial surge: usar o Python 2 ou o Python 3 em seus projetos? Essa dúvida é comum entre desenvolvedores Python e, se você também está indeciso sobre qual versão usar, este artigo fornecerá informações valiosas para auxiliar sua decisão.
O que é Python 2?
Python 2 e Python 3 são as duas principais versões ou lançamentos da linguagem de programação Python. O Python 2.0 foi introduzido no ano 2000, trazendo consigo novos recursos e aprimoramentos com o objetivo de facilitar o aprendizado e o uso do Python para o desenvolvimento de software.
O Python 2 também introduziu a proposta de aprimoramento do Python (PEP), um documento de design que fornece informações sobre novas funcionalidades do Python e serve como mecanismo principal para sugerir novas características para a linguagem.
O Python 2 foi amplamente adotado e utilizado por desenvolvedores e empresas. Contudo, em 1º de janeiro de 2020, o Python 2 foi oficialmente descontinuado e deixou de receber suporte. Após essa data, nenhuma melhoria adicional foi implementada no Python 2. A última versão do Python 2 foi o Python 2.7, lançado em 2010.
Com o fim do suporte ao Python 2, o foco foi redirecionado para a próxima grande versão da linguagem Python.
O que é Python 3?
O Python 3, lançado em 3 de dezembro de 2008, foi criado para solucionar as falhas de design e problemas de segurança presentes no Python 2. O Python 3 introduziu mudanças substanciais e novas funcionalidades na linguagem, visando eliminar redundâncias na escrita do código e aumentar sua legibilidade.
A redundância na codificação refere-se à existência de código repetitivo ou duplicado. O Python 3 trouxe alterações na sintaxe da linguagem, entre outras modificações. As mudanças no Python 3 foram tão significativas que o código em Python 3 se tornou incompatível com o Python 2.
Embora se esperasse que todas as empresas e desenvolvedores já estivessem utilizando o Python 3, isso não ocorreu totalmente. Uma pesquisa com desenvolvedores Python realizada pela JetBrains em 2022 revelou que 7% dos desenvolvedores Python ainda utilizavam o Python 2. A pesquisa indicou que o Python 2 era usado principalmente em análise de dados, computação gráfica e DevOps.
Como os desenvolvedores trabalham diretamente com código, vamos analisar alguns exemplos que ilustram as diferenças na sintaxe entre o Python 2 e o Python 3 antes de explorar as principais diferenças entre as duas versões.
Diferenças de sintaxe entre Python 2 e Python 3
Uma das distinções entre Python 2 e Python 3 é a forma como eles exibem informações na saída padrão. No Python 2, ‘print’ é um comando, enquanto no Python 3, ‘print’ é uma função. Os exemplos de código abaixo demonstram essas diferenças ao imprimir na saída padrão usando ambas as versões.
Python 2
print "Olá, Mundo!"
Saída:
Python 3
print("Olá, Mundo!")
Saída
Outra diferença notável na sintaxe do código entre Python 2 e Python 3 é o uso de anotações de tipo. As anotações de tipo nos permitem especificar o tipo de uma variável, parâmetro ou até mesmo o tipo de retorno de uma função. Isso pode ajudar a minimizar erros em nosso código e também comunicar de forma clara os tipos esperados em nosso código.
As anotações de tipo são suportadas no Python 3, mas não no Python 2. O exemplo de código abaixo mostra como as anotações de tipo são usadas no Python 3 e como o mesmo código seria sem anotações de tipo no Python 2.
Python 3
No exemplo de código abaixo, ‘int’ é usado para indicar que a variável ‘idade’ deve ser um número inteiro. ‘str’ é usado para anotar o argumento da função ‘saudar’ e também seu tipo de retorno.
# Anotação de tipo - usando int para indicar que idade é um inteiro idade: int = 30 # Anotação de tipo - str usado para indicar o tipo do argumento # e o tipo de retorno da função saudar() def saudar(nome: str) -> str: return "Olá, " + nome resultado = saudar("Alice") print(resultado) print("Sua idade é " + str(idade))
Saída:
Olá, Alice Sua idade é 30
Python 2
Observe que o código não possui anotações de tipo. Além disso, note como a impressão é feita:
idade = 30; def saudar(nome): return "Olá, " + nome resultado = saudar("Alice") print resultado print "Sua idade é " + str(idade)
Saída:
Olá, Alice Sua idade é 30
Outra diferença que você notará ao escrever código em Python 2 e Python 3 é o resultado da divisão inteira. Para ilustrar isso, vamos realizar uma divisão inteira em Python 2 e Python 3:
Analisando o código acima, percebemos que ao realizar a divisão inteira no Python 2, obtemos um número inteiro, e a parte decimal é truncada. No entanto, no Python 3, o resultado de uma divisão inteira é um valor de ponto flutuante, que inclui a parte decimal dos cálculos.
Considerando essas diferenças na sintaxe, qual versão você prefere utilizar, Python 2 ou Python 3? Você acredita que o Python 3 representa uma evolução em relação ao Python 2? Caso ainda esteja indeciso, vamos explorar outras diferenças entre o Python 2 e o Python 3 para auxiliar na sua escolha.
Diferenças entre Python 2 e Python 3
As diferenças entre Python 2 e Python 3 estão resumidas abaixo:
Recurso/Aspecto | Python 2 | Python 3 |
Data de lançamento | 16 de outubro de 2000 | 3 de dezembro de 2008 |
Suporte oficial | O suporte oficial terminou em 1º de janeiro de 2020 | Atualmente é a versão oficial suportada do Python |
Performance | ‘print’ é uma declaração. Por exemplo, ‘print “Olá, mundo!”’ | Melhor desempenho e é mais rápido que o Python 2 em quase todos os testes de referência |
Sintaxe | Sintaxe mais complexa e com algumas redundâncias | Sintaxe mais simples, fácil de ler e entender, com pouca ou nenhuma redundância |
Armazenamento de Strings | Strings são armazenadas como ASCII por padrão | Strings são armazenadas como UNICODE por padrão |
Divisão Inteira | Dividir dois inteiros resulta em um inteiro com a parte decimal truncada. Por exemplo, 5/2 == 2 | Dividir dois inteiros resulta em um valor de ponto flutuante. Por exemplo, 5/2 == 2.5 |
‘print’ | ‘print’ é uma declaração. Por exemplo, ‘print “Olá, mundo!”‘ | ‘print’ é uma função. Por exemplo, ‘print(“Olá, mundo!”)’ |
Anotações de tipo | Não possui suporte integrado para anotações de tipo | Possui suporte integrado para anotações de tipo, permitindo especificar o tipo de variáveis, valores de retorno e parâmetros de função. |
Iteração | A iteração da função é feita usando a função ‘range()’, que é mais eficiente do que ‘xrange()’ | Possui suporte integrado para anotações de tipo, permitindo que você especifique o tipo de variáveis, valores de retorno e parâmetros de função. |
Bibliotecas | Muitas bibliotecas do Python 3 são projetadas para funcionar apenas com o Python 3, sem compatibilidade com versões anteriores com o Python 2. | Oferece melhor suporte para bibliotecas. |
Uso | Não é mais amplamente utilizado, pois não é suportado | É amplamente utilizado por desenvolvedores e empresas. Atualmente é a versão mais popular do Python. |
Como migrar do Python 2 para o Python 3
Dado que o Python 3 oferece maior segurança e desempenho, uma sintaxe mais clara e legível com pouca ou nenhuma redundância, e é a versão oficialmente suportada do Python, faz sentido migrar do Python 2 para o Python 3.
Entretanto, essa transição é mais fácil de dizer do que de fazer. O Python 3 não é compatível com versões anteriores do Python 2. A migração de um projeto do Python 2 para o Python 3 pode ser um processo complexo e demandar tempo e esforço, dependendo do tamanho do projeto.
Por exemplo, a Dropbox, com a colaboração de Guido van Rossum, o criador da linguagem Python, levou cerca de três anos para concluir com sucesso a migração do Python 2 para o Python 3.
Para migrar do Python 2 para o Python 3, inicialmente, certifique-se de compreender claramente as diferenças entre as duas versões e avalie os custos e benefícios da migração para seu aplicativo. Após essa análise, utilize um sistema de controle de versão para reverter seu aplicativo para uma versão funcional anterior, caso ocorram erros que causem problemas.
Verifique as dependências do seu aplicativo e confirme se elas são compatíveis com o Python 3. Muitas bibliotecas foram migradas para o Python 3; portanto, selecione dependências que sejam compatíveis.
A próxima etapa deve ser adaptar seu código existente de Python 2 para Python 3. Esta é a parte mais desafiadora, mas o Python oferece uma ferramenta chamada 2to3 que facilita essa tarefa, lendo o código Python 2 e o convertendo para Python 3. Utilize esta ferramenta para acelerar o processo de migração.
À medida que você realiza a migração, é fundamental testar e corrigir quaisquer problemas que surjam no seu código. Avalie os problemas levantados pelos relatórios gerados pelo ‘2to3’ e corrija-os. A utilização de ferramentas de teste automatizadas é muito útil para agilizar o processo e aumentar a cobertura de testes.
Ao longo do processo de migração, certifique-se de documentar tudo. Além disso, adote uma abordagem iterativa para a migração. Se você possui uma grande base de código, em vez de migrar toda de uma vez para Python 3, divida o processo em etapas, migrando diferentes módulos do aplicativo em diferentes iterações.
Fatores a serem considerados ao escolher entre Python 2 e Python 3 para seu projeto
Ao trabalhar com Python, há várias considerações que você deve fazer ao decidir se utilizará o Python 2 ou o Python 3.
Algumas dessas considerações incluem:
- Nível de experiência – Se você é um desenvolvedor iniciante em Python, utilize o Python 3, pois é a versão mais utilizada atualmente. Além disso, você terá acesso a mais recursos de aprendizagem. Se você é um desenvolvedor Python experiente e compreende as diferentes versões e os resultados esperados em um projeto, pode utilizar o Python 2 ou o Python 3. Escolha a versão que melhor atende às necessidades do seu projeto e seja compreendida pela maioria dos membros de sua equipe.
- Código legado – como desenvolvedor, você pode se deparar com grandes bases de código escritas em Python 2. Em algumas situações, o custo da migração para o Python 3 pode ser maior que os benefícios. Nesses casos, pode ser mais adequado utilizar o Python 2.
- Compatibilidade da biblioteca – algumas bibliotecas mais antigas do Python 2 ainda não foram totalmente atualizadas para funcionar com o Python 3. Se você está trabalhando em projetos que dependem dessas bibliotecas, pode ser melhor usar o Python 2.
- Desempenho – se você estiver criando um aplicativo que requer alto desempenho, deve utilizar o Python 3. Ele oferece melhor desempenho que o Python 2 e recursos que levam a aplicativos com melhor performance. Portanto, se sua aplicação exige alto desempenho, use o Python 3, como fazem o Instagram e o Dropbox.
- Viabilidade a longo prazo – o Python 2 atingiu o fim da vida útil em 2020 e não recebe mais suporte oficial. Portanto, se você está iniciando um novo projeto ou mantendo um já existente, faz mais sentido usar o Python 3, por ser mais seguro e preparado para o futuro. Ele continua recebendo atualizações e correções de segurança.
O ideal é que em todos os seus projetos você use o Python 3, pois essa é a versão oficialmente suportada e oferece vários recursos para aprimorar o desenvolvimento e o desempenho dos aplicativos.
Utilize o Python 2 apenas em situações muito específicas, como projetos legados com extenso código em Python 2 ou projetos que possuem requisitos específicos que tornam o Python 2 mais adequado.
Conclusão
Como desenvolvedor Python, quase todos os meus projetos Python foram desenvolvidos com o Python 3. Seu design aprimorado, melhor desempenho, maior segurança e sintaxe mais limpa com menos redundância fazem do Python 3 a escolha mais acertada entre as duas versões.
Considerando que o Python 3 também é a versão oficialmente suportada e representa o futuro da linguagem Python, você deve usá-lo em seus projetos e também quando estiver aprendendo a programar.
Para finalizar, veja como verificar a versão do Python no Windows, Linux e macOS.