aspectos. Em listas, módulos, conjuntos e dicionários, os espaços podem aparecer na frente ou atrás de vírgulas, o que não tem nenhum efeito negativo. No entanto, o manual de estilo de código do Python indica que as vírgulas não podem ser precedidas por espaços e que os vírgulas devem ser seguidas por um espaço.
Os scripts 2to3 não corrigem os espaços em torno das vírgulas por defeito. Para ativar esse recurso, especifique o parâmetro -f wscomma quando a linha de comando é chamada 2to3.
Notes | Before | After |
---|---|---|
a ,b | a, b | |
{a :b} | {a: b} |
Muitas práticas foram criadas na comunidade Python. Existem algumas como a while 1: loop, que remonta a Python 1. A Python não tinha um tipo de booleano em sentido real até o Python 2.3, então os desenvolvedores usavam alternativas de 1 e 0. Os programadores Python contemporâneos devem treinar seus cérebros para usar as versões modernas dessas práticas.
Os scripts 2to3 não fazem correções para essas práticas por padrão. Para ativar essa função, especifique o parâmetro -f idioms quando a linha de comando é chamada 2to3.
Notes | Before | After |
---|---|---|
while 1: do_stuff() |
while True: do_stuff() |
|
type(x) == T | isinstance(x, T) | |
type(x) is T | isinstance(x, T) | |
a_list = list(a_sequence) | a_list = sorted(a_sequence) | |
a_list.sort() | do_stuff(a_list) | |
do_stuff(a_list) |
Traduzido de:Blog da CSDN
Como converter o código do Python 2.x para o código do Python 3.x Métodos para converter código do Python 2.x para código do Python 3.x
Isso não é muito para dizer, se apenas envolver poucas funções, como print e assim por diante.
Então você pode mudar o código.
As versões 2.x do Python, como o Python 2.7.2 que eu instalei, trazem algumas ferramentas úteis para o download e instalação no Windows.
Uma delas, chamada 2to3.py, é para ajudar você a implementar e converter o código do Python 2.x para o código do Python 3.x.
A sua localização é: Directório raiz de instalação do Python\Python27\Tools\Scripts\2to3.py
Como usar o 2to3.py para converter o código do Python 2.x para o Python 3.x Por exemplo, eu tenho um script em Python 2.x:
D:\tmp\tmp_dev_root\python\python2_to_python3\34563264_data_from_site.py
Agora, o código que quer transformá-lo em Python 3.x.
Pode ser executado abrindo o cmd do Windows, localizando-se sob o script a ser convertido
D:\tmp\WordPress\DevRoot\Python27\Tools\Scripts\2to3.py -w 34563264_data_from_site.py
A conversão foi bem-sucedida, com os seguintes resultados:
D:\tmp\tmp_dev_root\python\python2_to_python3>D:\tmp\WordPress\DevRoot\Python27\Tools\Scripts\2to3.py -w 34563264_data_from_site.py
RefactoringTool: Skipping implicit fixer: buffer
RefactoringTool: Skipping implicit fixer: idioms
RefactoringTool: Skipping implicit fixer: set_literal
RefactoringTool: Skipping implicit fixer: ws_comma
RefactoringTool: Refactored 34563264_data_from_site.py
--- 34563264_data_from_site.py (original)
+++ 34563264_data_from_site.py (refactored)
@@ -18,7 +18,7 @@
import time;
import codecs;
import logging;
-import urllib;
+import urllib.request, urllib.parse, urllib.error;
from datetime import datetime,timedelta;
from optparse import OptionParser;
from string import Template,replace;
@@ -90,7 +90,7 @@
foundPhone = eachItemSoup.find(attrs={"class":"phone"});
logging.debug("foundPhone=%s", foundPhone);
if(foundPhone):
- foundPhoneUni = unicode(foundPhone);
+ foundPhoneUni = str(foundPhone);
logging.debug("foundPhoneUni=%s", foundPhoneUni);
# case 1:
#<p class="phone"><strong>phone:</strong> 800.206.7886<br />
@@ -122,7 +122,7 @@
foundWeb = eachItemSoup.find(attrs={"class":"web"});
logging.debug("foundWeb=%s", foundWeb);
if(foundWeb):
- foundWebUni = unicode(foundWeb);
+ foundWebUni = str(foundWeb);
logging.debug("foundWebUni=%s", foundWebUni);
# <p class="web"><strong>e-mail:</strong> <a href="#">sales@cinesysinc.com</a><br />
@@ -151,7 +151,7 @@
foundAddr = eachItemSoup.find(attrs={"class":"addr"});
logging.debug("foundAddr=%s", foundAddr);
if(foundAddr):
- foundAddrUni = unicode(foundAddr);
+ foundAddrUni = str(foundAddr);
# <p class="addr">
# <strong>address:</strong> 740 SW 21st Ave, Suite #310<br />
RefactoringTool: Files that were modified:
RefactoringTool: 34563264_data_from_site.py
Agora, você pode ver que o original 34563264_data_from_site.py foi transformado em código Python 3.x.
Para isso, é necessário criar um arquivo bak::34563264_data_from_site.py.bak. Comparando os dois, você verá a diferença:
Atualmente, para o próprio 2to3.py, você também pode ver mais usos através da ajuda:
D:\tmp\tmp_dev_root\python\python2_to_python3>D:\tmp\WordPress\DevRoot\Python27\Tools\Scripts\2to3.py -h
Usage: 2to3 [options] file|dir ...
Options:
-h, --help show this help message and exit
-d, --doctests_only Fix up doctests only
-f FIX, --fix=FIX Each FIX specifies a transformation; default: all
-j PROCESSES, --processes=PROCESSES
Run 2to3 concurrently
-x NOFIX, --nofix=NOFIX
Prevent a transformation from being run
-l, --list-fixes List available transformations
-p, --print-function Modify the grammar so that print() is a function
-v, --verbose More verbose logging
--no-diffs Don't show diffs of the refactoring
-w, --write Write back modified files
-n, --nobackups Don't write backups for modified files
O blogueiro é conhecido por seu trabalho de divulgação de imagens e vídeos.
(1) Se não for adicionado o parâmetro -w, o padrão é apenas imprimir o conteúdo de diferença correspondente ao processo de conversão para a janela atual.
(2) Adicionar -w é escrever o conteúdo alterado de volta ao documento original.
(3) Se você não quiser gerar um arquivo bak, adicione -n.
(4) Não quero ver o conteúdo de uma série de saídas, mas, com os “no-diffs”, sim.
Os outros não foram apresentados muito bem. Os interessados podem continuar a pesquisar por conta própria.
O uso de 2 a 3 acima é copiado deNo caminho
A edição foi reeditada e, se houver erros, por favor, aponte! ^_^