jenis Boolean secara harfiah sampai Python 2.3, sehingga pengembang sebelumnya menggunakan 1 dan 0 sebagai pengganti.
Skrip 2to3 secara default tidak akan melakukan perbaikan untuk kebiasaan ini. Untuk mengaktifkan fitur ini, tentukan parameter -f idioms pada saat panggilan 2to3 di baris perintah.
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) |
Diposting olehBlog CSDN
Bagaimana mengubah kode Python 2.x menjadi kode Python 3.x. Cara mengubah kode Python 2.x ke kode Python 3.x
Ini tidak perlu banyak bicara, jika hanya melibatkan beberapa fungsi, seperti print dan lain-lain.
Jadi, jika Anda ingin mengubah kode Anda sendiri, Anda bisa melakukannya.
Versi Python 2.x, seperti Python 2.7.2 yang saya instal, memiliki beberapa alat yang berguna setelah diunduh dan diinstal di windows.
Salah satunya, yang disebut 2to3.py, adalah untuk membantu Anda mengimplementasikan, mengubah kode Python 2.x menjadi kode Python 3.x.
Situs ini berlokasi di: Python Installation Root Directory
Bagaimana cara menggunakan 2to3.py untuk mengimplementasikan kode Python 2.x, untuk mengubah kode Python 3.x Misalnya, saya memiliki skrip Python 2.x:
D:\tmp\tmp_dev_root\python\python2_to_python3\34563264_data_from_site.py
Sekarang, kode untuk mengubahnya menjadi Python 3.x.
Anda dapat mencarinya dengan membuka cmd windows, dan mencarinya di bawah skrip yang akan dikonversi, dan kemudian menjalankannya
D:\tmp\WordPress\DevRoot\Python27\Tools\Scripts\2to3.py -w 34563264_data_from_site.py
Hasilnya adalah:
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
Pada saat ini, Anda dapat melihat bahwa 34563264_data_from_site.py telah berubah menjadi kode Python 3.x.
Ada juga file bak::34563264_data_from_site.py.bak, bandingkan keduanya, dan Anda akan melihat perbedaan:
Saat ini, untuk 2to3.py sendiri, Anda bisa melihat lebih banyak lagi dengan mencari bantuan:
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
Di sini, saya hanya menjelaskan beberapa hal:
(1) Jika tidak ada parameter -w di atas, maka secara default hanya akan mencetak konten diff yang sesuai dengan proses konversi ke jendela saat ini.
(2) Menambahkan -w berarti mengubah isi, menulis kembali ke dokumen asli.
(3) Jika Anda tidak ingin membuat file bak, tambahkan -n.
(4) Jika Anda tidak ingin melihat banyak output, tambahkan no-diffs.
Yang lainnya, tidak banyak diceritakan.
2 to 3 di atas adalah terjemahan dariDalam perjalanan
Jika ada kesalahan, silakan tunjukkan! ^_^