Caso você esteja iniciando seus estudos na linguagem Python ou começando um projeto novo, aconselhamos fortemente que você utilize o Python3.
O Python2 vem sendo chamado de Python legado ou Python antigo por boa parte da comunidade que está em constante atividade para fazer a migração da base de código existente (bem grande, por sinal) para Python3.
Aconselhamos a leitura deste artigo para maiores detalhes: https://wiki.python.org/moin/Python2orPython3.
A pergunta correta aqui é: Quando devo usar o Python antigo? E a resposta mais comum que você vai encontrar é: use Python antigo quando você não tiver escolha.
Por exemplo, quando você trabalhar em um projeto antigo e migrar para a nova versão não for uma alternativa no momento. Ou quando você precisa utilizar uma biblioteca que ainda não funciona no Python3 ou não está em processo de mudança. Outro caso é quando seu servidor de hospedagem só permite usar Python2 - aqui o aconselhável é procurar por outro serviço que atenda sua demanda.
No mais, você encontrará muito material sobre o Python2 na internet e aos poucos vai conhecendo melhor as diferenças entre uma versão e outra.
Neste artigo você vai encontrar a resposta https://docs.python.org/3/whatsnew/3.0.html. Mas neste capítulo mostramos as diferenças mais básicas e importantes para você iniciar seus estudos.
No Python2 o comando print
funciona de maneira diferente já que não é uma função. Para imprimir algo fazemos:
# no python2
>>> print "Hello World!"
Hello World!
No Python3 print
é uma função e utilizamos os parênteses como delimitadores:
# no python3
>>> print("Hello World!")
Hello World!
A função raw_input
do Python2 foi renomeada para input()
no Python3:
# no python2
>>> nome = raw_input("Digite seu nome: ")
No Python3:
# no python3
>>> nome = input("Digite seu nome: ")
No Python2 a divisão entre números decimais é diferente entre um número decimal e um inteiro:
# no python2
>>> 5 / 2
2
>>> 5 / 2.0
2.5
No Python3 a divisão tem o mesmo comportamento da matemática. E se quisermos o resultado inteiro da divisão utilizamos //
:
# no python3
>>> 5 / 2
2.5
>>> 5 // 2
2
No Python2 suas classes devem herdar de object
:
# no python2
>>> class MinhaClasse(object):
def metodo(self, attr1, attr2):
return attr1 + attr2
No Python3 essa herança é implícita, não precisando herdar explicitamente de object
:
# no python3
>>> class MinhaClasse():
def metodo(self, attr1, attr2):
return attr1 + attr2