Articles

Diferenças chave entre Python 2 e 3: Como navegar na mudança

Este tutorial cobrirá os seguintes tópicos:

  1. Expressões
  2. Opções de impressão
  3. Operações desiguais
  4. Intervalo
  5. Migração automatizada
  6. Problemas de desempenho
  7. Migração automatizada
  8. Problemas de poupança?

Expressões

Expressões representam algo, como um número, um fio, ou uma instância de uma classe. Qualquer valor é uma expressão! Qualquer coisa que faz alguma coisa é uma afirmação. Qualquer atribuição a uma variável ou chamada de função é uma declaração. Qualquer valor contido nessa expressão é uma expressão.

Isto é o que escreveria para obter uma expressão avaliada em Python 2:

X = raw_input ("enter some values)

Mas em Python 3, teria de escrever isto:

X = input ("enter some values") 

Assim, o que quer que digitemos então para o valor é atribuído à variável x tanto em 2 como em 3. Quando introduzo 2*6 em Python 2, o resultado será 12, que é o valor avaliado.

No entanto, quando este mesmo programa é executado em Python 3, o resultado é valores de string. Neste caso, pareceria 2*6 em formato de string.

Então, como podemos obter a expressão avaliada? Agora, temos de usar uma expressão ou função chamada eval. quando se escreve eval antes da entrada, ela transformará a expressão num valor avaliado.

x= eval(input("enter some values")) = 12 

Exemplos de expressão detalhados:

Aqui está como seria em Python 2:

name = input("What is your name? ")print ("Hello, %s." %name) 

E a saída:

pythonpython

Aqui está como seria em Python 3:

name = input("What is your name? ")print ("Hello, %s." %name) 

E a saída:

python

Como se pode ver claramente, há muito pouca diferença entre os dois.

Leia também: Uma introdução à linguagem de programação Python

Quando Guido van Rossum desenvolveu Python, ele quis criar uma linguagem de programação “simples” que ultrapassasse as vulnerabilidades de outros sistemas. Devido à sintaxe simples e frases sintácticas sofisticadas, a linguagem tornou-se o padrão para várias aplicações científicas como a aprendizagem de máquinas.

Opções de impressão

Em Python 2, imprimir é uma afirmação que não precisa de parênteses. Em Python 3, a impressão é uma função e os valores precisam de ser escritos entre parênteses.

Python 2

Input:

print "hello world" 

Output:

pythonpython

Python 3

Input:

1 != 1.0print (False) 

Efecção:

pythonpython

Operações desiguais

P>Vamos passar para a terceira diferença. Quando usamos um operador desigual em Python 2, precisamos de usar os sinais maiores que > ou menores que <. No entanto, em Python 3, existe um operador geral. O ponto de exclamação ! e sinal igual = são usados para mostrar se as coisas não são iguais.

p>python 2 – <> operador é usado para não igual
python 3 – ! operador é utilizado para não igual

Python 2

Input:

1 <> 1.0print "False" 

Output:

p>PYTHON

Python 3

Input:

1 != 1.0print (False)1 != 1.0print (False) 

Output:

VER TAMBÉM: Olhares: Fique de olho no seu código com esta ferramenta de monitorização Python

Alteração

Agora, vamos passar aos intervalos. Quais são as gamas?

Uma gama é utilizada para gerar uma lista de números, que é geralmente utilizada para iterar com for loops.

python

Aqui pode ver X igual a gama 10. Quando verificamos a variável X, ela devolve o nosso tipo de lista. Isto significa que em Python 2, o intervalo é o tipo de lista. Quando escrevo X, depois disso, obtemos uma lista de objectos. que é 0 1 2 3 4 5 6 7 8 9.

python

Agora vamos passar ao Python 3, quando escrevemos x igual ao intervalo 5. Este valor de intervalo 5 é atribuído à variável X; quando verificamos o tipo para a variável X, então ela retorna um objecto de intervalo em si. Isto significa que em Python 3 o intervalo é um objecto de intervalo em si.

Python 2

Input:

print range(0,10,1) 

Output:

Python 3

Input:

print(list(range(10))) 

Output:

Migração automatizada

Então, como automatizar o script de migração para mover o código de Python 2 para 3?

Aqui, podemos testar com um programa simples como Adicionar 2 Números em python.

p>Python 2

Input:

n1 = 1n2 = 2add = float(n1) + float(n2)print 'sum of {0} and {1} is {2}'.format(n1, n2, add) 

Output:

Agora usando a migração de 2 a 3 podemos converter o código acima.

Input:

n1 = 1n2 = 2add = float(n1) + float(n2)print('sum of {0} and {1} is {2}'.format(n1, n2, add)) 

Output:

Portanto, aqui vemos que pode ser convertido para o código Python 3 por 2 a 3 na linha de comando.

Python fornece a sua própria ferramenta chamada 2to3.py. Que executa um monte de scripts para traduzir o seu código python 2 em 3. Embora não seja perfeito, mas faz um trabalho global espantoso. Depois de converter qualquer código, deve entrar e corrigir manualmente quaisquer problemas.

VER TAMBÉM: Venha, Nagini. Precisamos de verificar se o código Python

Performance

A maioria dos problemas de performance foram corrigidos nesta actualização! Ao comparar os pontos de referência entre as duas versões, as diferenças são quase insignificantes.

Algumas grandes mudanças na gestão doméstica

Python 2

  • Imprimir parênteses funcionais opcionais.
  • Prefixa cadeia com u para fazer cadeia unicode.
  • Divisão de inteiros retorna sempre inteiros – 5/2=2.
  • Ingresso_em-pé () lê string.
  • ingresso() avalia os dados lidos.
  • gerador .next().

Python 3

  • Imprimir parênteses funcionais obrigatórios.
  • Funcionar unicode por defeito.
  • Divisão de inteiros pode resultar em flutuar – 5/2=2.5.
  • Entrada_em-pé() não disponível.
  • Entrada lê sempre string.
  • Próximo (gerador).
  • Py2 a utilidade py3.
  • Dicionário .keys() e .values() devolve uma vista e não uma lista.
  • Não pode mais usar operadores de comparação em comparações não naturais.
    Eg. Nenhum < Nenhum irá levantar um TypeError em vez de retornar falso.
  • O operador de formatação de cadeia de caracteres de percentagem (%) é depreciado usar a função .format() ou concatenação.

VER TAMBÉM: Top 5 IDEs e editores de código para Python

Problemas de poupança?

Pode encontrar um erro aqui e ali se tiver estado a trabalhar em python 2.x durante algum tempo. Está bem! Basta procurar no Google o problema, é quase certo que outra pessoa também teve esse problema quando migrou.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *