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










Comentários Recentes