Perubahan antara Python 2.x.x dan Python 3.x.x & Cara mengonversi Python 2.x.x ke Python 3.x.x

Dibuat di: 2016-10-09 12:36:49, diperbarui pada: 2017-10-11 10:18:05
comments   2
hits   4963

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 ke kode Python 3

Bagaimana mengubah kode Python 2.x menjadi kode Python 3.x. Cara mengubah kode Python 2.x ke kode Python 3.x

  • #### 1. Mengubahnya sendiri secara manual

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.

  • #### 2. Menggunakan Python built-in (Python script) tool untuk membantu Anda melakukan konversi secara otomatis

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>&nbsp;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>&nbsp;<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>&nbsp;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:

Perubahan antara Python 2.x.x dan Python 3.x.x & Cara mengonversi Python 2.x.x ke Python 3.x.x

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! ^_^