Bài viết này giải thích các tính năng mới trong Python 3. 0, so với 2. 6. Trăn 3. 0, còn được gọi là “Python 3000” hoặc “Py3K”, là bản phát hành Python không tương thích ngược có chủ ý đầu tiên. Trăn 3. 0 được phát hành vào ngày 3 tháng 12 năm 2008. Có nhiều thay đổi hơn so với bản phát hành thông thường và nhiều thay đổi khác quan trọng đối với tất cả người dùng Python. Tuy nhiên, sau khi tiêu hóa các thay đổi, bạn sẽ thấy rằng Python thực sự đã không thay đổi nhiều như vậy - nói chung, chúng tôi chủ yếu sửa những phiền toái và mụn cóc nổi tiếng, đồng thời loại bỏ rất nhiều hành trình cũ.
Bài viết này không cố gắng cung cấp thông số kỹ thuật đầy đủ của tất cả các tính năng mới mà thay vào đó cố gắng cung cấp một cái nhìn tổng quan thuận tiện. Để biết đầy đủ chi tiết, bạn nên tham khảo tài liệu về Python 3. 0 và/hoặc nhiều PEP được tham chiếu trong văn bản. Nếu bạn muốn hiểu toàn bộ triển khai và cơ sở thiết kế cho một tính năng cụ thể, PEP thường có nhiều chi tiết hơn tài liệu thông thường;
Do hạn chế về thời gian, tài liệu này không đầy đủ như lẽ ra phải có. Như thường lệ đối với bản phát hành mới, tệp
print["There are possibilities!", sep=""]01 trong bản phân phối nguồn chứa nhiều thông tin chi tiết về từng điều nhỏ đã được thay đổi
Những trở ngại thường gặp¶
Phần này liệt kê một số thay đổi có khả năng khiến bạn gặp khó khăn nhất nếu bạn đã quen với Python 2. 5
In là một chức năng¶
Câu lệnh
print["There are possibilities!", sep=""]02 đã được thay thế bằng hàm
print["There are possibilities!", sep=""]03, với các đối số từ khóa để thay thế hầu hết cú pháp đặc biệt của câu lệnh
print["There are possibilities!", sep=""]02 cũ [PEP 3105]. ví dụ
Old: print "The answer is", 2*2 New: print["The answer is", 2*2] Old: print x, # Trailing comma suppresses newline New: print[x, end=" "] # Appends a space instead of a newline Old: print # Prints a newline New: print[] # You must call the function! Old: print >>sys.stderr, "fatal error" New: print["fatal error", file=sys.stderr] Old: print [x, y] # prints repr[[x, y]] New: print[[x, y]] # Not the same as print[x, y]!
Bạn cũng có thể tùy chỉnh dấu phân cách giữa các mục, e. g
print["There are possibilities!", sep=""]
sản xuất
There are possibilities!
Ghi chú
Hàm
print["There are possibilities!", sep=""]
03 không hỗ trợ tính năng “softspace” của câu lệnhprint["There are possibilities!", sep=""]
02 cũ. Ví dụ, trong Python 2. x,print["There are possibilities!", sep=""]
3 sẽ viếtprint["There are possibilities!", sep=""]
4; . 0,print["There are possibilities!", sep=""]
5 viếtprint["There are possibilities!", sep=""]
6Ban đầu, bạn sẽ thấy mình gõ
print["There are possibilities!", sep=""]
7 cũ rất nhiều ở chế độ tương tác. Thay vào đó, đã đến lúc luyện lại các ngón tay của bạn để gõprint["There are possibilities!", sep=""]
8Khi sử dụng công cụ chuyển đổi từ nguồn sang nguồn của
print["There are possibilities!", sep=""]
9, tất cả các câu lệnhprint["There are possibilities!", sep=""]
02 sẽ tự động được chuyển đổi thành lệnh gọi hàmprint["There are possibilities!", sep=""]
03, vì vậy điều này hầu như không phải là vấn đề đối với các dự án lớn hơn
Lượt xem và trình vòng lặp thay vì danh sách¶
Một số API nổi tiếng không còn trả lại danh sách
Phương pháp
There are possibilities!
2There are possibilities!
3,There are possibilities!
4 vàThere are possibilities!
5 trả về “lượt xem” thay vì danh sách. Ví dụ, điều này không còn hoạt động.There are possibilities!
6. Thay vào đó, hãy sử dụngThere are possibilities!
7 [điều này hoạt động trong Python 2. 5 cũng vậy và cũng hiệu quả như vậy]Ngoài ra, các phương pháp
There are possibilities!
8,There are possibilities!
9 vàprint["There are possibilities!", sep=""]
80 không còn được hỗ trợTrình vòng lặp trả về
print["There are possibilities!", sep=""]
81 vàprint["There are possibilities!", sep=""]
82. Nếu bạn thực sự cần một danh sách và các chuỗi đầu vào đều có độ dài bằng nhau, cách khắc phục nhanh là bọcprint["There are possibilities!", sep=""]
81 trongprint["There are possibilities!", sep=""]
84, e. g.print["There are possibilities!", sep=""]
85, nhưng cách khắc phục tốt hơn thường là sử dụng khả năng hiểu danh sách [đặc biệt khi mã gốc sử dụngprint["There are possibilities!", sep=""]
86] hoặc viết lại mã để không cần danh sách nào cả. Đặc biệt khó khăn làprint["There are possibilities!", sep=""]
81 được gọi cho các tác dụng phụ của chức năng;Nếu các chuỗi đầu vào không có độ dài bằng nhau,
print["There are possibilities!", sep=""]
81 sẽ dừng ở phần cuối của chuỗi ngắn nhất. Để tương thích hoàn toàn vớiprint["There are possibilities!", sep=""]
81 từ Python 2. x, cũng bọc các chuỗi trongThere are possibilities!
91, e. g.There are possibilities!
92 trở thànhThere are possibilities!
93There are possibilities!
94 bây giờ hoạt động giống nhưThere are possibilities!
95 đã từng hoạt động, ngoại trừ nó hoạt động với các giá trị có kích thước tùy ý. Cái sau không còn tồn tạiThere are possibilities!
96 hiện trả về một iterator
So sánh thứ tự¶
Trăn 3. 0 đã đơn giản hóa các quy tắc để so sánh thứ tự
Các toán tử so sánh thứ tự [
There are possibilities!
97,There are possibilities!
98,There are possibilities!
99,print["There are possibilities!", sep=""]
80] đưa ra một ngoại lệ TypeError khi toán hạng không có thứ tự tự nhiên có ý nghĩa. Do đó, các biểu thức nhưprint["There are possibilities!", sep=""]
81,print["There are possibilities!", sep=""]
82 hoặcprint["There are possibilities!", sep=""]
83 không còn giá trị nữa và e. g.print["There are possibilities!", sep=""]
84 tăngprint["There are possibilities!", sep=""]
85 thay vì trả lạiprint["There are possibilities!", sep=""]
86. Một hệ quả tất yếu là việc sắp xếp một danh sách không đồng nhất không còn ý nghĩa nữa – tất cả các phần tử phải được so sánh với nhau. Lưu ý rằng điều này không áp dụng cho các toán tửprint["There are possibilities!", sep=""]
87 vàprint["There are possibilities!", sep=""]
88. các đối tượng thuộc các loại không thể so sánh khác nhau luôn so sánh không bình đẳng với nhauprint["There are possibilities!", sep=""]
89 vàprint["There are possibilities!", sep=""]
80 không còn chấp nhận đối số cmp cung cấp chức năng so sánh. Thay vào đó, hãy sử dụng đối số chính. N. B. các đối số chính và đảo ngược hiện là "chỉ từ khóa"Hàm
print["There are possibilities!", sep=""]
81 nên được coi là không còn nữa và phương thức đặc biệt củaprint["There are possibilities!", sep=""]
82 không còn được hỗ trợ. Sử dụngprint["There are possibilities!", sep=""]
83 để sắp xếp,print["There are possibilities!", sep=""]
84 vớiprint["There are possibilities!", sep=""]
85 và các phép so sánh phong phú khác nếu cần. [Nếu bạn thực sự cần chức năngprint["There are possibilities!", sep=""]
81, bạn có thể sử dụng biểu thứcprint["There are possibilities!", sep=""]
87 tương đương vớiprint["There are possibilities!", sep=""]
88. ]
Số nguyên¶
PEP 237. Về cơ bản,
print["There are possibilities!", sep=""]
89 được đổi tên thànhprint["There are possibilities!", sep=""]
010. Nghĩa là, chỉ có một loại tích phân dựng sẵn, tên làprint["There are possibilities!", sep=""]
010;PEP 238. Một biểu thức như
print["There are possibilities!", sep=""]
013 trả về một số float. Sử dụngprint["There are possibilities!", sep=""]
014 để có được hành vi cắt bớt. [Cú pháp thứ hai đã tồn tại trong nhiều năm, ít nhất là kể từ Python 2. 2. ]Hằng số
print["There are possibilities!", sep=""]
015 đã bị xóa vì không còn giới hạn về giá trị của số nguyên. Tuy nhiên,print["There are possibilities!", sep=""]
016 có thể được sử dụng như một số nguyên lớn hơn bất kỳ danh sách hoặc chỉ mục chuỗi thực tế nào. Nó phù hợp với kích thước số nguyên "tự nhiên" của triển khai và thường giống nhưprint["There are possibilities!", sep=""]
015 trong các bản phát hành trước trên cùng một nền tảng [giả sử có cùng tùy chọn bản dựng]print["There are possibilities!", sep=""]
018 của một số nguyên dài không còn bao gồm đuôiprint["There are possibilities!", sep=""]
019 nữa, vì vậy mã loại bỏ vô điều kiện ký tự đó sẽ cắt bỏ chữ số cuối cùng thay vào đó. [Sử dụngprint["There are possibilities!", sep=""]
020 thay thế. ]Chữ bát phân không còn ở dạng
print["There are possibilities!", sep=""]
021;
Văn bản Vs. Dữ liệu thay vì Unicode Vs. 8 bit¶
Mọi thứ bạn nghĩ bạn đã biết về dữ liệu nhị phân và Unicode đã thay đổi
Trăn 3. 0 sử dụng các khái niệm về văn bản và dữ liệu [nhị phân] thay vì chuỗi Unicode và chuỗi 8 bit. Tất cả văn bản là Unicode; . Loại dùng để chứa văn bản là
print["There are possibilities!", sep=""]
023, loại dùng để chứa dữ liệu làprint["There are possibilities!", sep=""]
024. Sự khác biệt lớn nhất với 2. x là bất kỳ nỗ lực nào để trộn văn bản và dữ liệu trong Python 3. 0 tăngprint["There are possibilities!", sep=""]
85, trong khi nếu bạn kết hợp các chuỗi Unicode và 8 bit trong Python 2. x, nó sẽ hoạt động nếu chuỗi 8 bit chỉ chứa byte 7 bit [ASCII], nhưng bạn sẽ nhận đượcprint["There are possibilities!", sep=""]
026 nếu chuỗi đó chứa các giá trị không phải ASCII. Hành vi cụ thể về giá trị này đã gây ra nhiều khuôn mặt đáng buồn trong những năm quaDo sự thay đổi triết lý này, hầu như tất cả các mã sử dụng Unicode, mã hóa hoặc dữ liệu nhị phân rất có thể phải thay đổi. Sự thay đổi là tốt hơn, như trong 2. x world, có rất nhiều lỗi liên quan đến việc trộn văn bản được mã hóa và không được mã hóa. Để được chuẩn bị trong Python 2. x, hãy bắt đầu sử dụng
print["There are possibilities!", sep=""]
027 cho tất cả văn bản chưa được mã hóa và chỉprint["There are possibilities!", sep=""]
023 cho dữ liệu được mã hóa hoặc nhị phân. Sau đó, công cụprint["There are possibilities!", sep=""]
9 sẽ thực hiện hầu hết công việc cho bạnBạn không thể sử dụng chữ
print["There are possibilities!", sep=""]
030 cho văn bản Unicode nữa. Tuy nhiên, bạn phải sử dụng chữprint["There are possibilities!", sep=""]
031 cho dữ liệu nhị phânVì các loại
print["There are possibilities!", sep=""]
023 vàprint["There are possibilities!", sep=""]
024 không thể trộn lẫn, bạn phải luôn chuyển đổi rõ ràng giữa chúng. Sử dụngprint["There are possibilities!", sep=""]
034 để đi từprint["There are possibilities!", sep=""]
023 đếnprint["There are possibilities!", sep=""]
024 vàprint["There are possibilities!", sep=""]
037 để đi từprint["There are possibilities!", sep=""]
024 đếnprint["There are possibilities!", sep=""]
023. Bạn cũng có thể sử dụngprint["There are possibilities!", sep=""]
00 vàprint["There are possibilities!", sep=""]
01 tương ứngGiống như
print["There are possibilities!", sep=""]
023, loạiprint["There are possibilities!", sep=""]
024 là bất biến. Có một loại có thể thay đổi riêng để giữ dữ liệu nhị phân được đệm,print["There are possibilities!", sep=""]
04. Gần như tất cả các API chấp nhậnprint["There are possibilities!", sep=""]
024 cũng chấp nhậnprint["There are possibilities!", sep=""]
04. API có thể thay đổi dựa trênprint["There are possibilities!", sep=""]
07Tất cả các dấu gạch chéo ngược trong chuỗi ký tự thô được diễn giải theo nghĩa đen. Điều này có nghĩa là các lần thoát của
print["There are possibilities!", sep=""]
08 vàprint["There are possibilities!", sep=""]
09 trong các chuỗi thô không được xử lý đặc biệt. Ví dụ:print["There are possibilities!", sep=""]
10 là một chuỗi gồm 6 ký tự trong Python 3. 0, trong khi ở 2. 6,print["There are possibilities!", sep=""]
11 là ký tự “euro” duy nhất. [Tất nhiên, thay đổi này chỉ ảnh hưởng đến các chuỗi ký tự thô; ký tự euro làprint["There are possibilities!", sep=""]
12 trong Python 3. 0. ]Loại trừu tượng
print["There are possibilities!", sep=""]
13 tích hợp đã bị xóa. Sử dụngprint["There are possibilities!", sep=""]
023 để thay thế. Các loạiprint["There are possibilities!", sep=""]
023 vàprint["There are possibilities!", sep=""]
024 không có đủ chức năng chung để đảm bảo một lớp cơ sở dùng chung. Công cụprint["There are possibilities!", sep=""]
9 [xem bên dưới] thay thế mọi lần xuất hiện củaprint["There are possibilities!", sep=""]
13 bằngprint["There are possibilities!", sep=""]
023Các tệp được mở dưới dạng tệp văn bản [vẫn là chế độ mặc định cho
print["There are possibilities!", sep=""]
20] luôn sử dụng mã hóa để ánh xạ giữa các chuỗi [trong bộ nhớ] và byte [trên đĩa]. Các tệp nhị phân [được mở bằngprint["There are possibilities!", sep=""]
21 trong đối số chế độ] luôn sử dụng byte trong bộ nhớ. Điều này có nghĩa là nếu tệp được mở bằng chế độ hoặc mã hóa không chính xác, I/O có thể sẽ bị lỗi lớn thay vì tạo ra dữ liệu không chính xác một cách âm thầm. Điều đó cũng có nghĩa là ngay cả người dùng Unix cũng sẽ phải chỉ định đúng chế độ [văn bản hoặc nhị phân] khi mở tệp. Có một mã hóa mặc định phụ thuộc vào nền tảng, mà trên nền tảng Unixy có thể được đặt bằng biến môi trườngprint["There are possibilities!", sep=""]
22 [và đôi khi cũng với một số biến môi trường liên quan đến ngôn ngữ cụ thể của nền tảng khác]. Trong nhiều trường hợp, nhưng không phải tất cả, mặc định của hệ thống là UTF-8; . Bất kỳ ứng dụng nào đọc hoặc viết nhiều hơn văn bản ASCII thuần túy có thể có cách ghi đè mã hóa. Không còn nhu cầu sử dụng các luồng nhận biết mã hóa trong mô-đunprint["There are possibilities!", sep=""]
23Các giá trị ban đầu của
print["There are possibilities!", sep=""]
24,print["There are possibilities!", sep=""]
25 vàprint["There are possibilities!", sep=""]
26 hiện là các tệp văn bản chỉ unicode [i. e. , chúng là các thể hiện củaprint["There are possibilities!", sep=""]
27]. Để đọc và ghi dữ liệu byte với các luồng này, bạn cần sử dụng thuộc tínhprint["There are possibilities!", sep=""]
28 của chúngTên tệp được chuyển đến và trả về từ API dưới dạng chuỗi [Unicode]. Điều này có thể gây ra các sự cố dành riêng cho nền tảng vì trên một số nền tảng, tên tệp là các chuỗi byte tùy ý. [Mặt khác, trên Windows, tên tệp được lưu trữ nguyên bản dưới dạng Unicode. ] Như một giải pháp thay thế, hầu hết các API [e. g.
print["There are possibilities!", sep=""]
20 và nhiều hàm trong mô-đunprint["There are possibilities!", sep=""]
30] lấy tên tệp chấp nhận đối tượngprint["There are possibilities!", sep=""]
024 cũng như chuỗi và một số API có cách yêu cầu giá trị trả vềprint["There are possibilities!", sep=""]
024. Do đó,print["There are possibilities!", sep=""]
33 trả về danh sách các phiên bảnprint["There are possibilities!", sep=""]
024 nếu đối số là phiên bảnprint["There are possibilities!", sep=""]
024 vàprint["There are possibilities!", sep=""]
36 trả về thư mục làm việc hiện tại dưới dạng phiên bảnprint["There are possibilities!", sep=""]
024. Lưu ý rằng khiprint["There are possibilities!", sep=""]
33 trả về một danh sách các chuỗi, các tên tệp không thể giải mã chính xác sẽ bị bỏ qua thay vì tăngprint["There are possibilities!", sep=""]
39Một số API hệ thống như
print["There are possibilities!", sep=""]
40 vàprint["There are possibilities!", sep=""]
41 cũng có thể gây ra sự cố khi các byte do hệ thống cung cấp không thể hiểu được bằng cách sử dụng mã hóa mặc định. Đặt biếnprint["There are possibilities!", sep=""]
22 và chạy lại chương trình có lẽ là cách tốt nhấtPEP 3138.
print["There are possibilities!", sep=""]
018 của một chuỗi không còn thoát khỏi các ký tự không phải ASCII. Tuy nhiên, nó vẫn thoát khỏi các ký tự điều khiển và điểm mã với trạng thái không in được trong tiêu chuẩn UnicodePEP 3120. Mã hóa nguồn mặc định hiện là UTF-8
PEP 3131. Các chữ cái không phải ASCII hiện được cho phép trong số nhận dạng. [Tuy nhiên, thư viện tiêu chuẩn vẫn chỉ ở dạng ASCII, ngoại trừ tên người đóng góp trong nhận xét. ]
Các mô-đun
print["There are possibilities!", sep=""]
44 vàprint["There are possibilities!", sep=""]
45 đã biến mất. Thay vào đó, hãy nhập mô-đunprint["There are possibilities!", sep=""]
46 và sử dụngprint["There are possibilities!", sep=""]
47 hoặcprint["There are possibilities!", sep=""]
48 cho văn bản và dữ liệu tương ứngXem thêm HƯỚNG DẪN Unicode , đã được cập nhật cho Python 3. 0.
Tổng quan về thay đổi cú pháp¶
Phần này cung cấp tổng quan ngắn gọn về mọi thay đổi cú pháp trong Python 3. 0
Cú pháp mới¶
PEP 3107. Đối số hàm và chú thích giá trị trả về. Điều này cung cấp một cách chuẩn hóa để chú thích các tham số của hàm và giá trị trả về. Không có ngữ nghĩa nào được đính kèm với các chú thích như vậy ngoại trừ việc chúng có thể được xem xét nội tâm khi chạy bằng thuộc tính
print["There are possibilities!", sep=""]
49. Mục đích là để khuyến khích thử nghiệm thông qua siêu dữ liệu, trình trang trí hoặc khungPEP 3102. Đối số chỉ từ khóa. Các tham số được đặt tên xuất hiện sau
print["There are possibilities!", sep=""]
50 trong danh sách tham số phải được chỉ định bằng cú pháp từ khóa trong lệnh gọi. Bạn cũng có thể sử dụngprint["There are possibilities!", sep=""]
51 trống trong danh sách tham số để cho biết rằng bạn không chấp nhận danh sách đối số có độ dài thay đổi, nhưng bạn có các đối số chỉ có từ khóaĐối số từ khóa được cho phép sau danh sách các lớp cơ sở trong định nghĩa lớp. Điều này được sử dụng theo quy ước mới để chỉ định siêu dữ liệu [xem phần tiếp theo], nhưng cũng có thể được sử dụng cho các mục đích khác, miễn là siêu dữ liệu hỗ trợ nó
PEP 3104. tuyên bố
print["There are possibilities!", sep=""]
52. Sử dụngprint["There are possibilities!", sep=""]
53, giờ đây bạn có thể gán trực tiếp cho một biến trong phạm vi bên ngoài [nhưng không toàn cầu].print["There are possibilities!", sep=""]
52 là một từ dành riêng mớiPEP 3132. Giải nén Iterable mở rộng. Bây giờ bạn có thể viết những thứ như
print["There are possibilities!", sep=""]
55. Và thậm chíprint["There are possibilities!", sep=""]
56. Đối tượngprint["There are possibilities!", sep=""]
57 luôn là một danh sách [có thể trống]; . Thí dụprint["There are possibilities!", sep=""]
8Điều này đặt a thành
print["There are possibilities!", sep=""]
58, b thànhprint["There are possibilities!", sep=""]
59 và phần còn lại thànhprint["There are possibilities!", sep=""]
60hiểu từ điển.
print["There are possibilities!", sep=""]
61 có nghĩa giống nhưprint["There are possibilities!", sep=""]
62 nhưng linh hoạt hơn. [Đây là PEP 274 được chứng minh. . -]Đặt chữ, e. g.
print["There are possibilities!", sep=""]
63. Lưu ý rằngprint["There are possibilities!", sep=""]
64 là một từ điển rỗng; . Khả năng hiểu tập hợp cũng được hỗ trợ; . g. ,print["There are possibilities!", sep=""]
66 có nghĩa tương tự nhưprint["There are possibilities!", sep=""]
67 nhưng linh hoạt hơnChữ bát phân mới, e. g.
print["There are possibilities!", sep=""]
022 [đã có trong 2. 6]. Các chữ số bát phân cũ [print["There are possibilities!", sep=""]
021] đã biến mấtChữ nhị phân mới, e. g.
print["There are possibilities!", sep=""]
70 [đã có trong 2. 6] và có một hàm tích hợp tương ứng mới,print["There are possibilities!", sep=""]
71Các ký tự byte được giới thiệu với một
print["There are possibilities!", sep=""]
21 hoặcprint["There are possibilities!", sep=""]
73 hàng đầu và có một hàm tích hợp tương ứng mới,print["There are possibilities!", sep=""]
74
Cú pháp đã thay đổi¶
PEP 3109 và PEP 3134. cú pháp câu lệnh
print["There are possibilities!", sep=""]
75 mới.print["There are possibilities!", sep=""]
76. Xem bên dướiprint["There are possibilities!", sep=""]
77 vàprint["There are possibilities!", sep=""]
78 hiện là những từ dành riêng. [Kể từ 2. 6, thực sự. ]print["There are possibilities!", sep=""]
79,print["There are possibilities!", sep=""]
86 vàprint["There are possibilities!", sep=""]
81 là những từ dành riêng. [2. 6 đã thực thi một phần các hạn chế đối vớiprint["There are possibilities!", sep=""]
81. ]Thay đổi từ
print["There are possibilities!", sep=""]
83 exc, var thànhprint["There are possibilities!", sep=""]
83 excprint["There are possibilities!", sep=""]
77 var. Xem PEP 3110PEP 3115. Cú pháp siêu dữ liệu mới. Thay vì
There are possibilities!
9bây giờ bạn phải sử dụng
print["There are possibilities!", sep=""]
8Biến mô-đun-toàn cầu
print["There are possibilities!", sep=""]
86 không còn được hỗ trợ. [Đó là một cái nạng để làm cho việc mặc định các lớp kiểu mới dễ dàng hơn mà không cần lấy mọi lớp từprint["There are possibilities!", sep=""]
87. ]Khả năng hiểu danh sách không còn hỗ trợ dạng cú pháp
print["There are possibilities!", sep=""]
88. Sử dụngprint["There are possibilities!", sep=""]
89 để thay thế. Cũng lưu ý rằng việc hiểu danh sách có ngữ nghĩa khác nhau. chúng gần với đường cú pháp hơn đối với biểu thức trình tạo bên trong hàm tạoprint["There are possibilities!", sep=""]
84 và đặc biệt là các biến điều khiển vòng lặp không còn bị rò rỉ vào phạm vi xung quanhDấu chấm lửng [
print["There are possibilities!", sep=""]
91] có thể được sử dụng như một biểu thức nguyên tử ở bất cứ đâu. [Trước đây nó chỉ được phép ở dạng lát. ] Ngoài ra, bây giờ nó phải được đánh vần làprint["There are possibilities!", sep=""]
91. [Trước đây nó cũng có thể được đánh vần làprint["There are possibilities!", sep=""]
93, do ngẫu nhiên về ngữ pháp. ]
Cú pháp đã loại bỏ¶
PEP 3113. Đã xóa tham số Tuple. Bạn không còn có thể viết
print["There are possibilities!", sep=""]
94. Sử dụngprint["There are possibilities!", sep=""]
95 thay thếĐã xóa backticks [thay vào đó hãy sử dụng
print["There are possibilities!", sep=""]
018]Đã xóa
print["There are possibilities!", sep=""]
97 [thay vào đó sử dụngprint["There are possibilities!", sep=""]
88]từ khóa đã xóa.
print["There are possibilities!", sep=""]
99 không còn là một từ khóa; . [Thật may là cú pháp hàm cũng được chấp nhận trong 2. x. ] Cũng lưu ý rằngprint["There are possibilities!", sep=""]
99 không còn nhận đối số luồng nữa;Các chữ số nguyên không còn hỗ trợ dấu sau
There are possibilities!
03 hoặcprint["There are possibilities!", sep=""]
019Chuỗi ký tự không còn hỗ trợ một
There are possibilities!
05 hoặcThere are possibilities!
06 hàng đầuCú pháp mô-đun
There are possibilities!
07There are possibilities!
08print["There are possibilities!", sep=""]
51 chỉ được phép ở cấp độ mô-đun, không còn bên trong các chức năngCú pháp duy nhất được chấp nhận cho nhập khẩu tương đối là
There are possibilities!
10. Tất cả các biểu mẫuThere are possibilities!
08 không bắt đầu bằngThere are possibilities!
12 được hiểu là nhập khẩu tuyệt đối. [PEP 328]Các lớp học cổ điển đã biến mất
Các thay đổi đã có trong Python 2. 6¶
Vì nhiều người dùng có lẽ đã chuyển thẳng từ Python 2. 5 đến Python 3. 0, phần này nhắc nhở người đọc về các tính năng mới ban đầu được thiết kế cho Python 3. 0 nhưng đã được chuyển ngược sang Python 2. 6. Các phần tương ứng trong Có gì mới trong Python 2. 6 nên được tư vấn cho các mô tả dài hơn.
PEP 343. Câu lệnh ‘với’ . Câu lệnh
print["There are possibilities!", sep=""]
78 hiện là một tính năng tiêu chuẩn và không còn cần phải nhập từThere are possibilities!
14 nữa. Ngoài ra, hãy xem Viết trình quản lý ngữ cảnh và Mô-đun contextlib .PEP 366. Nhập khẩu tương đối rõ ràng từ một mô-đun chính . Điều này nâng cao tính hữu ích của tùy chọn
There are possibilities!
15 khi mô-đun được tham chiếu nằm trong một gói.PEP 370. Thư mục gói trang web cho mỗi người dùng .
PEP 371. Gói đa xử lý .
PEP 3101. Định dạng chuỗi nâng cao . Ghi chú. 2. 6 mô tả đề cập đến phương thức
There are possibilities!
16 cho cả chuỗi 8-bit và chuỗi Unicode. Trong 3. 0, chỉ loạiprint["There are possibilities!", sep=""]
023 [chuỗi văn bản có hỗ trợ Unicode] hỗ trợ phương pháp này; . Kế hoạch cuối cùng là biến đây thành API duy nhất để định dạng chuỗi và bắt đầu ngừng sử dụng toán tửThere are possibilities!
19 trong Python 3. 1.PEP 3105. in dưới dạng hàm . Đây hiện là một tính năng tiêu chuẩn và không còn cần phải nhập từ
There are possibilities!
14. Thêm chi tiết đã được đưa ra ở trên.PEP 3110. Thay đổi xử lý ngoại lệ . Cú pháp
print["There are possibilities!", sep=""]
83 excprint["There are possibilities!", sep=""]
77 var hiện là tiêu chuẩn vàprint["There are possibilities!", sep=""]
83 exc, var không còn được hỗ trợ. [Tất nhiên phần var củaprint["There are possibilities!", sep=""]
77 vẫn là tùy chọn. ]PEP 3112. Số byte . Ký hiệu chuỗi ký tự
print["There are possibilities!", sep=""]
031 [và các biến thể của nó nhưThere are possibilities!
26,There are possibilities!
27 vàThere are possibilities!
28] hiện tạo ra một ký tự loạiprint["There are possibilities!", sep=""]
024.PEP 3116. Thư viện I/O mới . Mô-đun
print["There are possibilities!", sep=""]
46 hiện là cách tiêu chuẩn để thực hiện tệp I/O. Hàmprint["There are possibilities!", sep=""]
20 tích hợp hiện là bí danh choThere are possibilities!
32 và có thêm đối số từ khóa mã hóa, lỗi, dòng mới và closefd. Cũng lưu ý rằng đối số chế độ không hợp lệ hiện tăngThere are possibilities!
33, không phảiThere are possibilities!
34. Đối tượng tệp nhị phân bên dưới đối tượng tệp văn bản có thể được truy cập dưới dạngThere are possibilities!
35 [nhưng lưu ý rằng đối tượng văn bản duy trì bộ đệm của chính nó để tăng tốc các hoạt động mã hóa và giải mã].PEP 3118. Giao thức bộ đệm đã sửa đổi . Nội dung cũ
There are possibilities!
36 hiện đã thực sự biến mất; .PEP 3119. Các lớp cơ sở trừu tượng . Mô-đun
There are possibilities!
38 và các ABC được xác định trong mô-đunThere are possibilities!
39 hiện đóng một vai trò nổi bật hơn trong ngôn ngữ và các loại bộ sưu tập tích hợp sẵn nhưThere are possibilities!
2 vàThere are possibilities!
41 tương ứng với các ABC củaThere are possibilities!
42 vàprint["There are possibilities!", sep=""]
07.PEP 3127. Cú pháp và hỗ trợ số nguyên . Như đã đề cập ở trên, ký hiệu chữ bát phân mới là ký hiệu duy nhất được hỗ trợ và các ký tự nhị phân đã được thêm vào.
PEP 3129. Người trang trí lớp học .
PEP 3141. Phân cấp loại cho các số . Mô-đun
There are possibilities!
44 là một cách sử dụng mới khác của ABC, xác định “tháp số” của Python. Cũng lưu ý mô-đunThere are possibilities!
45 mới triển khaiThere are possibilities!
46.
Thay đổi thư viện¶
Do hạn chế về thời gian, tài liệu này không đề cập đầy đủ những thay đổi rất lớn đối với thư viện chuẩn. PEP 3108 là tài liệu tham khảo cho những thay đổi lớn đối với thư viện. Đây là một đánh giá viên nang
Nhiều mô-đun cũ đã bị xóa. Một số, như
There are possibilities!
47 [không còn được sử dụng] vàThere are possibilities!
48 [được thay thế bằngThere are possibilities!
49], đã bị PEP 4 phản đối. Những thứ khác đã bị xóa do loại bỏ hỗ trợ cho các nền tảng khác nhau như Irix, BeOS và Mac OS 9 [xem PEP 11]. Một số mô-đun cũng đã được chọn để xóa trong Python 3. 0 do ít sử dụng hoặc do có sự thay thế tốt hơn. Xem PEP 3108 để biết danh sách đầy đủGói
There are possibilities!
50 đã bị xóa vì sự hiện diện của nó trong thư viện tiêu chuẩn cốt lõi theo thời gian đã chứng tỏ là gánh nặng đặc biệt đối với các nhà phát triển cốt lõi do tính không ổn định của thử nghiệm và lịch phát hành của Berkeley DB. Tuy nhiên, gói vẫn hoạt động tốt, được duy trì bên ngoài tại https. //www. jcea. es/chương trình/pybsddb. htmMột số mô-đun đã được đổi tên vì tên cũ của chúng không tuân theo PEP 8 hoặc vì nhiều lý do khác. Đây là danh sách
Tên Cu
Tên mới
_winreg
winreg
Trình phân tích cú pháp cấu hình
trình cấu hình
copy_reg
sao chép
Xếp hàng
xếp hàng
SocketServer
máy chủ ổ cắm
cơ sở đánh dấu
_markupbase
đại diện
reprlib
kiểm tra. test_support
kiểm tra. ủng hộ
Một mẫu phổ biến trong Python 2. x là có một phiên bản của mô-đun được triển khai bằng Python thuần túy, với phiên bản tăng tốc tùy chọn được triển khai dưới dạng tiện ích mở rộng C; . Điều này đặt gánh nặng nhập phiên bản tăng tốc và quay trở lại phiên bản Python thuần túy đối với mỗi người dùng của các mô-đun này. Trong Trăn 3. 0, các phiên bản được tăng tốc được coi là chi tiết triển khai của các phiên bản Python thuần túy. Người dùng phải luôn nhập phiên bản tiêu chuẩn, cố gắng nhập phiên bản được tăng tốc và quay lại phiên bản Python thuần túy. Cặp
There are possibilities!
51 /There are possibilities!
52 được điều trị này. Mô-đunThere are possibilities!
55 nằm trong danh sách cho 3. 1. Mô-đunprint["There are possibilities!", sep=""]
44 đã được chuyển thành một lớp trong mô-đunprint["There are possibilities!", sep=""]
46Một số mô-đun liên quan đã được nhóm thành các gói và thông thường tên mô-đun con đã được đơn giản hóa. Các gói mới kết quả là
There are possibilities!
58 [There are possibilities!
59,There are possibilities!
60,There are possibilities!
58,There are possibilities!
62,There are possibilities!
63,There are possibilities!
64]________ 265 [________ 266, ________ 267]
There are possibilities!
68 [There are possibilities!
69,There are possibilities!
70, ________ 271, ________ 272, ________ 273, ________ 274]There are possibilities!
75 [tất cả các mô-đun liên quan đếnThere are possibilities!
76 ngoại trừThere are possibilities!
77]. Đối tượng mục tiêu củaThere are possibilities!
77 không thực sự quan tâm đếnThere are possibilities!
75. Cũng lưu ý rằng kể từ Python 2. 6, chức năng củaThere are possibilities!
77 đã được tăng cường rất nhiều________ 281 [________ 281, ________ 283, ________ 284, ________ 285]
________ 286 [________ 287, ________ 288, ________ 289]
Một số thay đổi khác đối với các mô-đun thư viện tiêu chuẩn, không được đề cập trong PEP 3108
Bị giết
There are possibilities!
90. Sử dụng lớpprint["There are possibilities!", sep=""]
65 tích hợpDọn dẹp mô-đun
There are possibilities!
92. đã xóaThere are possibilities!
93, _______ 294, ________ 295, ________ 296, ________ 297. [Lưu ý rằngThere are possibilities!
98, v.v. duy trì. ]Dọn dẹp loại
There are possibilities!
99. các phương thứcprint["There are possibilities!", sep=""]
800 vàprint["There are possibilities!", sep=""]
801 không còn nữa; . Ngoài ra, mã kiểuprint["There are possibilities!", sep=""]
804 cho mảng đã biến mất – sử dụngprint["There are possibilities!", sep=""]
805 cho byte hoặcprint["There are possibilities!", sep=""]
806 cho ký tự UnicodeDọn dẹp mô-đun
print["There are possibilities!", sep=""]
807. đã xóaprint["There are possibilities!", sep=""]
808 vàprint["There are possibilities!", sep=""]
809Dọn dẹp mô-đun
print["There are possibilities!", sep=""]
810.print["There are possibilities!", sep=""]
811 vàprint["There are possibilities!", sep=""]
812 đã biến mất;Dọn dẹp mô-đun
print["There are possibilities!", sep=""]
815. đã xóa APIprint["There are possibilities!", sep=""]
816Mô-đun
print["There are possibilities!", sep=""]
817 đã biến mấtCác chức năng
print["There are possibilities!", sep=""]
818,print["There are possibilities!", sep=""]
819 vàprint["There are possibilities!", sep=""]
820 đã bị loại bỏ để thay thế cho mô-đunprint["There are possibilities!", sep=""]
821Mô-đun
print["There are possibilities!", sep=""]
822 đã được thay đổi để hoạt động với byte. Điểm vào chính hiện làprint["There are possibilities!", sep=""]
823, thay vì generate_tokensprint["There are possibilities!", sep=""]
824 và những người bạn của nó [print["There are possibilities!", sep=""]
825 vàprint["There are possibilities!", sep=""]
826] đã ra đi. Sử dụngprint["There are possibilities!", sep=""]
827, v.v. thay vì. [Lý do xóa làprint["There are possibilities!", sep=""]
824 và bạn bè có hành vi cụ thể theo địa phương, đây là một ý tưởng tồi đối với các “hằng số” toàn cầu được đặt tên hấp dẫn như vậy. ]Đã đổi tên mô-đun
print["There are possibilities!", sep=""]
829 thànhprint["There are possibilities!", sep=""]
830 [xóa dấu gạch dưới, thêm 's']. Biếnprint["There are possibilities!", sep=""]
831 được tìm thấy trong hầu hết các không gian tên toàn cầu không thay đổi. Để sửa đổi nội trang, bạn nên sử dụngprint["There are possibilities!", sep=""]
830, không phảiprint["There are possibilities!", sep=""]
831
PEP 3101. Một cách tiếp cận mới để định dạng chuỗi¶
Một hệ thống mới cho các hoạt động định dạng chuỗi tích hợp thay thế toán tử định dạng chuỗi
There are possibilities!
19. [Tuy nhiên, toán tửThere are possibilities!
19 vẫn được hỗ trợ; nó sẽ không được dùng nữa trong Python 3. 1 và bị xóa khỏi ngôn ngữ sau một thời gian. ] Đọc PEP 3101 để biết thông tin đầy đủ
Thay đổi đối với ngoại lệ¶
Các API để tăng và bắt ngoại lệ đã được dọn sạch và thêm các tính năng mạnh mẽ mới
PEP 352. Tất cả các ngoại lệ phải được bắt nguồn [trực tiếp hoặc gián tiếp] từ
print["There are possibilities!", sep=""]
836. Đây là gốc của hệ thống phân cấp ngoại lệ. Đây không phải là đề xuất mới, nhưng yêu cầu kế thừa từprint["There are possibilities!", sep=""]
836 là mới. [Trăn 2. 6 vẫn cho phép các lớp cổ điển được nâng lên và không hạn chế những gì bạn có thể bắt. ] Kết quả là, các ngoại lệ chuỗi cuối cùng đã thực sự và hoàn toàn chếtHầu như tất cả các trường hợp ngoại lệ thực sự nên bắt nguồn từ
print["There are possibilities!", sep=""]
838; . Thành ngữ được khuyến nghị để xử lý tất cả các trường hợp ngoại lệ ngoại trừ danh mục sau này là sử dụngprint["There are possibilities!", sep=""]
83print["There are possibilities!", sep=""]
838print["There are possibilities!", sep=""]
844 đã bị xóaNgoại lệ không còn hoạt động như trình tự. Thay vào đó, hãy sử dụng thuộc tính
print["There are possibilities!", sep=""]
845PEP 3109. Tăng ngoại lệ. Bây giờ bạn phải sử dụng
print["There are possibilities!", sep=""]
846 thay vìprint["There are possibilities!", sep=""]
847. Ngoài ra, bạn không còn có thể chỉ định truy nguyên một cách rõ ràng nữa;PEP 3110. Bắt ngoại lệ. Bây giờ bạn phải sử dụng
print["There are possibilities!", sep=""]
849 thay vìprint["There are possibilities!", sep=""]
850. Hơn nữa, biến bị xóa rõ ràng khi khốiprint["There are possibilities!", sep=""]
83 còn lạiPEP 3134. Chuỗi ngoại lệ. Có hai trường hợp. chuỗi ngầm và chuỗi rõ ràng. Xâu chuỗi ngầm định xảy ra khi một ngoại lệ được đưa ra trong khối xử lý
print["There are possibilities!", sep=""]
83 hoặcprint["There are possibilities!", sep=""]
853. Điều này thường xảy ra do lỗi trong khối xử lý; . Trong trường hợp này, ngoại lệ ban đầu [đang được xử lý] được lưu dưới dạng thuộc tínhprint["There are possibilities!", sep=""]
854 của ngoại lệ phụ. Chuỗi rõ ràng được gọi với cú pháp nàyprint["There are possibilities!", sep=""]
8[trong đó Primary_Exception là bất kỳ biểu thức nào tạo ra một đối tượng ngoại lệ, có thể là một ngoại lệ đã bị bắt trước đó]. Trong trường hợp này, ngoại lệ chính được lưu trữ trên thuộc tính
print["There are possibilities!", sep=""]
855 của ngoại lệ phụ. Truy nguyên được in khi một ngoại lệ chưa được xử lý xảy ra sẽ đi qua chuỗi thuộc tínhprint["There are possibilities!", sep=""]
855 vàprint["There are possibilities!", sep=""]
854 và in một truy nguyên riêng biệt cho từng thành phần của chuỗi, với ngoại lệ chính ở trên cùng. [Người dùng Java có thể nhận ra hành vi này. ]PEP 3134. Các đối tượng ngoại lệ hiện lưu trữ truy nguyên của chúng dưới dạng thuộc tính
print["There are possibilities!", sep=""]
848. Điều này có nghĩa là một đối tượng ngoại lệ hiện chứa tất cả thông tin liên quan đến một ngoại lệ và có ít lý do hơn để sử dụngprint["There are possibilities!", sep=""]
859 [mặc dù đối tượng sau không bị xóa]Một vài thông báo ngoại lệ được cải thiện khi Windows không tải được mô-đun mở rộng. Ví dụ,
print["There are possibilities!", sep=""]
860 bây giờ làprint["There are possibilities!", sep=""]
861. Các chuỗi hiện xử lý các ngôn ngữ không phải tiếng Anh
Khác Các thay đổi khác¶
Toán tử và các phương thức đặc biệt¶
print["There are possibilities!", sep=""]
88 bây giờ trả về giá trị ngược lại củaprint["There are possibilities!", sep=""]
87, trừ khiprint["There are possibilities!", sep=""]
87 trả vềprint["There are possibilities!", sep=""]
865Khái niệm “phương thức không ràng buộc” đã bị xóa khỏi ngôn ngữ. Khi tham chiếu một phương thức như một thuộc tính lớp, bây giờ bạn có một đối tượng hàm đơn giản
print["There are possibilities!", sep=""]
866,print["There are possibilities!", sep=""]
867 vàprint["There are possibilities!", sep=""]
868 bị giết. Cú phápprint["There are possibilities!", sep=""]
869 hiện được dịch thànhprint["There are possibilities!", sep=""]
870 [hoặcprint["There are possibilities!", sep=""]
871 hoặcprint["There are possibilities!", sep=""]
872, khi được sử dụng làm mục tiêu gán hoặc xóa tương ứng]PEP 3114. phương pháp
print["There are possibilities!", sep=""]
873 tiêu chuẩn đã được đổi tên thànhprint["There are possibilities!", sep=""]
874Các phương thức đặc biệt của
print["There are possibilities!", sep=""]
875 vàprint["There are possibilities!", sep=""]
876 đã bị loại bỏ –print["There are possibilities!", sep=""]
877 vàprint["There are possibilities!", sep=""]
878 sử dụngprint["There are possibilities!", sep=""]
879 ngay bây giờ để chuyển đổi đối số thành một số nguyênĐã xóa hỗ trợ cho
print["There are possibilities!", sep=""]
880 vàprint["There are possibilities!", sep=""]
881Các thuộc tính hàm có tên
print["There are possibilities!", sep=""]
882 đã được đổi tên để sử dụng biểu mẫuprint["There are possibilities!", sep=""]
883, giải phóng các tên này trong không gian tên thuộc tính hàm cho các thuộc tính do người dùng xác định. Nói một cách dí dỏm,print["There are possibilities!", sep=""]
884,print["There are possibilities!", sep=""]
885,print["There are possibilities!", sep=""]
886,print["There are possibilities!", sep=""]
887,print["There are possibilities!", sep=""]
888,print["There are possibilities!", sep=""]
889,print["There are possibilities!", sep=""]
890 lần lượt được đổi tên thànhprint["There are possibilities!", sep=""]
891,print["There are possibilities!", sep=""]
892,print["There are possibilities!", sep=""]
893,print["There are possibilities!", sep=""]
894,print["There are possibilities!", sep=""]
895,print["There are possibilities!", sep=""]
896,print["There are possibilities!", sep=""]
897print["There are possibilities!", sep=""]
898 bây giờ làprint["There are possibilities!", sep=""]
899
Nội dung¶
PEP 3135. Mới
There are possibilities!
900. Giờ đây, bạn có thể gọiThere are possibilities!
900 mà không cần đối số và [giả sử đây là một phương thức thể hiện thông thường được định nghĩa bên trong câu lệnhThere are possibilities!
902], lớp và thể hiện phù hợp sẽ tự động được chọn. Với các đối số, hành vi củaThere are possibilities!
900 không thay đổiPEP 3111.
There are possibilities!
904 được đổi tên thànhThere are possibilities!
905. Nghĩa là, hàmThere are possibilities!
905 mới đọc một dòng từprint["There are possibilities!", sep=""]
24 và trả về nó với dòng mới ở cuối bị loại bỏ. Nó tăngThere are possibilities!
908 nếu đầu vào bị chấm dứt sớm. Để có hành vi cũ củaThere are possibilities!
905, hãy sử dụngThere are possibilities!
910Hàm tích hợp mới
print["There are possibilities!", sep=""]
873 đã được thêm vào để gọi phương thứcprint["There are possibilities!", sep=""]
874 trên một đối tượngChiến lược làm tròn hàm và kiểu trả về của hàm
There are possibilities!
913 đã thay đổi. Các trường hợp nửa chừng chính xác hiện được làm tròn thành kết quả chẵn gần nhất thay vì cách xa số 0. [Ví dụ:There are possibilities!
914 hiện trả vềThere are possibilities!
915 thay vìThere are possibilities!
916. ]There are possibilities!
917 hiện ủy quyền choThere are possibilities!
918 thay vì luôn trả về số float. Nó thường trả về một số nguyên khi được gọi với một đối số và một giá trị cùng loại vớiThere are possibilities!
919 khi được gọi với hai đối sốĐã chuyển
There are possibilities!
920 sangThere are possibilities!
921Loại bỏ.
There are possibilities!
922. Thay vì sử dụngThere are possibilities!
923There are possibilities!
924Đã xóa
There are possibilities!
925. Thay vìThere are possibilities!
926, bạn có thể sử dụngThere are possibilities!
927. Chức năngThere are possibilities!
928 cũng biến mấtĐã xóa
There are possibilities!
929. Chức năng này không còn phục vụ mục đích khi các lớp cổ điển không còn nữaĐã xóa
There are possibilities!
930. Thay vì sử dụngThere are possibilities!
931There are possibilities!
932Đã xóa loại
There are possibilities!
933. Sử dụngprint["There are possibilities!", sep=""]
20. Hiện tại có một số loại luồng khác nhau mở có thể quay lại trong mô-đunprint["There are possibilities!", sep=""]
46Đã xóa
There are possibilities!
936. Sử dụngThere are possibilities!
937 nếu bạn thực sự cần nó;Đã xóa
There are possibilities!
939. Sử dụngThere are possibilities!
940Loại bỏ.
There are possibilities!
941 – thay vào đó hãy sử dụng toán tửThere are possibilities!
942
Thay đổi về API Build và C¶
Do hạn chế về thời gian, đây là danh sách rất không đầy đủ các thay đổi đối với API C
Hỗ trợ cho một số nền tảng đã bị loại bỏ, bao gồm nhưng không giới hạn ở Mac OS 9, BeOS, RISCOS, Irix và Tru64
PEP 3118. API bộ đệm mới
PEP 3121. Khởi tạo và hoàn thiện mô-đun mở rộng
PEP 3123. Làm cho
There are possibilities!
943 phù hợp với tiêu chuẩn CKhông còn hỗ trợ API C để thực thi bị hạn chế
Các API C của
There are possibilities!
944,There are possibilities!
945,There are possibilities!
946 vàThere are possibilities!
947 đã bị xóaAPI C mới
There are possibilities!
948, hoạt động giống nhưThere are possibilities!
949 nhưng sẽ không chặn khóa nhập [thay vào đó trả về lỗi]Đã đổi tên vị trí và phương thức chuyển đổi cấp độ boolean.
There are possibilities!
950 bây giờ làThere are possibilities!
951Đã xóa
There are possibilities!
952 vàThere are possibilities!
953 khỏi API C
Màn biểu diễn¶
Kết quả ròng của 3. 0 khái quát hóa là Python 3. 0 chạy điểm chuẩn pystone chậm hơn khoảng 10% so với Python 2. 5. Rất có thể nguyên nhân lớn nhất là việc loại bỏ vỏ đặc biệt cho các số nguyên nhỏ. Có chỗ để cải thiện, nhưng nó sẽ xảy ra sau 3. 0 được phát hành
Chuyển sang Python 3. 0¶
Để chuyển Python 2 hiện có. 5 hoặc 2. 6 mã nguồn cho Python 3. 0, chiến lược tốt nhất là như sau
[Điều kiện tiên quyết. ] Bắt đầu với phạm vi kiểm tra xuất sắc
Chuyển sang Python 2. 6. Điều này sẽ không hoạt động nhiều hơn cổng trung bình từ Python 2. x sang Python 2. [x+1]. Hãy chắc chắn rằng tất cả các bài kiểm tra của bạn vượt qua
[Vẫn đang dùng 2. 6. ] Bật công tắc dòng lệnh
There are possibilities!
954. Điều này cho phép cảnh báo về các tính năng sẽ bị xóa [hoặc thay đổi] trong 3. 0. Chạy lại bộ thử nghiệm của bạn và sửa mã mà bạn nhận được cảnh báo cho đến khi không còn cảnh báo nào nữa và tất cả các thử nghiệm của bạn vẫn vượt quaChạy trình dịch từ nguồn sang nguồn của
print["There are possibilities!", sep=""]
9 trên cây mã nguồn của bạn. [Xem 2to3 — Dịch mã Python 2 sang 3 tự động để biết thêm về công cụ này. ] Chạy kết quả của bản dịch dưới Python 3. 0. Khắc phục mọi sự cố còn lại theo cách thủ công, khắc phục sự cố cho đến khi tất cả các bài kiểm tra vượt qua lần nữa.
Không nên cố gắng viết mã nguồn chạy không thay đổi trong cả Python 2. 6 và 3. 0; . g. tránh các câu lệnh
print["There are possibilities!", sep=""]02, siêu dữ liệu, v.v. Nếu bạn đang duy trì một thư viện cần hỗ trợ cả Python 2. 6 và Trăn 3. 0, cách tiếp cận tốt nhất là sửa đổi bước 3 ở trên bằng cách chỉnh sửa 2. 6 của mã nguồn và chạy lại trình dịch
print["There are possibilities!", sep=""]9, thay vì chỉnh sửa phiên bản 3. 0 phiên bản của mã nguồn