Atualizando os seus programas Python para a versão 3.0

188 0

Com o lançamento d versão 2.6 do Python, um caminho para chegar á versão 3.0, que também já foi lançado, foi também liberada uma biblioteca muito interessante na distribuição padrão do Python, a biblioteca 2to3. Resumindo, a biblioteca 2to3 contém vários scripts que são capazes de traduzir os seus programas escritos para a linha 2.x do Python para a mais recente versão 3.x. Na verdade a biblioteca em si ainda é instável, e poderá mudar muito no futuro, mas existe um programa Python também chamado de 2to3 que é capaz de fazer isso.

Usando o 2to3 para traduzir programas Python para a versão 3.x

Normalmente o 2to3 é instalado com a distribuição padrão do Python, e fica localizado no diretório Tools/scripts dentro da raiz do Python.

O argumento básico do 2to3 é uma lista de arquivos e diretórios contendo os scripts a transformar. Daí o script fará o resto. Aqui temos um exemplo de um programa Python usando a sintaxe 2.x com o nome exemplo.py:

def alo(nome):

          print "Alo, {0}!".format(nome)

print "Qual o seu nome?"

nome = raw_input()

alo(nome)

Agora usaremos o 2to3 para converter este script para a versão 3.x, usando a linha de comandos do Windows XP:

C:Python26ToolsScripts>2to3.py ….alo.py

Note que aqui dissemos para o 2to3 traduzir o script indicado como argumento, e ele obedeceu, basta ver que na linha de comandos apareceu o script completamente traduzido para a versão 3.x. Note que o script não modificou o código fonte, apenas imprimiu o novo código na linha de comandos. Para que ele possa fazer isso, devemos passar um argumento adicional durante a execução do 2to3:

 C:Python26ToolsScripts>2to3.py -w ….alo.py

Note a existência do -w na passagem. Agora o código fonte será transformado no arquivo alo.py, e uma cópia é feita para questões de backup. Você pode não necessitar que o backup seja feito, nesse caso é só passar o argumento -n na passagem. Abaixo está o script alo.py já transformado:

def alo(nome):

         print("Alo, {0}!".format(name))

print("Qual o seu nome?")

nome = input()

alo(nome)

Os comentários e as identações serão preservadas durante o processo de translação. Se o 2to3 encontrar um código onde ele não é capaz de traduzir automaticamente, então irá imprimir uma mensagem de erro. Pode saber mais sobre o 2to3 lendo a documentação do Python, nas versões superiores a 2.6

(Visited 24 times, 1 visits today)