Nhiều người mới bắt đầu sử dụng Python đang tự hỏi họ nên bắt đầu với phiên bản Python nào. Câu trả lời của tôi cho câu hỏi này thường là một cái gì đó dọc theo dòng chữ “chỉ cần sử dụng phiên bản hướng dẫn yêu thích của bạn đã được viết và kiểm tra sự khác biệt sau này. ”
Nhưng nếu bạn đang bắt đầu một dự án mới và có quyền lựa chọn thì sao? . 7. x và Python3. x hỗ trợ các thư viện mà bạn định sử dụng. Tuy nhiên, đáng để xem xét sự khác biệt chính giữa hai phiên bản Python phổ biến nhất đó để tránh những cạm bẫy phổ biến khi viết mã cho một trong số chúng hoặc nếu bạn đang định chuyển dự án của mình
Phần #
- phần
- Mô-đun
05from platform import python_version
- Chức năng in
- Trăn 2
- Trăn 3
- phép chia số nguyên
- Trăn 2
- Trăn 3
- bảng chữ cái
- Trăn 2
- Trăn 3
- xrange
- Trăn 2
- Trăn 3
- Phương thức
06 cho đối tượngfrom platform import python_version
07 trong Python 3from platform import python_version
- Lưu ý về sự khác biệt về tốc độ trong Python 2 và 3
- Tăng ngoại lệ
- Trăn 2
- Trăn 3
- Xử lý ngoại lệ
- Trăn 2
- Trăn 3
- Hàm next[] và. phương thức tiếp theo []
- Trăn 2
- Trăn 3
- Biến vòng lặp for và rò rỉ không gian tên chung
- Trăn 2
- Trăn 3
- So sánh các loại không thể sắp xếp
- Trăn 2
- Trăn 3
- Phân tích cú pháp đầu vào của người dùng thông qua input[]
- Trăn 2
- Trăn 3
- Trả về các đối tượng có thể lặp lại thay vì danh sách
- Trăn 2
- Trăn 3
- Làm tròn ngân hàng
- Trăn 2
- Trăn 3
- Các bài viết khác về Python 2 và Python 3
Mô-đun from platform import python_version
05 #
from platform import python_version
Trăn 3. x đã giới thiệu một số từ khóa và tính năng không tương thích với Python 2 có thể được nhập thông qua mô-đun
from platform import python_version
05 tích hợp trong Python 2. Bạn nên sử dụng from platform import python_version
05 nhập nó nếu bạn đang lập kế hoạch cho Python 3. x hỗ trợ cho mã của bạn. Ví dụ, nếu chúng ta muốn Python 3. hành vi chia số nguyên của x trong Python 2, chúng ta có thể nhập nó quafrom __future__ import division
Các tính năng khác có thể được nhập từ mô-đun
from platform import python_version
05 được liệt kê trong bảng bên dướitính năngtùy chọn bắt buộc không có hiệu lựcnested_scopes2. 1. 0b12. 2PEP 227. Trình tạo phạm vi lồng nhau tĩnh2. 2. 0a12. 3PEP 255. Máy phát điện đơn giản2. 2. 0a23. 0PEP 238. Thay đổi toán tử bộ phậnabsolute_import2. 5. 0a13. 0PEP 328. nhập khẩu. Đa dòng và Tuyệt đối/Tương đối với_statement2. 5. 0a12. 6PEP 343. Câu lệnh “với”print_function2. 6. 0a23. 0PEP 3105. Thực hiện in một functionunicode_literals2. 6. 0a23. 0PEP 3112. Byte chữ trong Python 3000 [Nguồn. [https. // tài liệu. con trăn. org/2/library/__future__. html][https. // tài liệu. con trăn. org/2/library/__future__. html#module-__tương lai__]]from platform import python_version
Chức năng in #
Rất tầm thường và sự thay đổi trong cú pháp in có lẽ là sự thay đổi được biết đến rộng rãi nhất, nhưng nó vẫn đáng được đề cập. Câu lệnh in của Python 2 đã được thay thế bằng hàm
from platform import python_version
12, nghĩa là chúng ta phải bao đối tượng muốn in trong dấu ngoặc đơnPython 2 không gặp vấn đề với dấu ngoặc đơn bổ sung, nhưng ngược lại, Python 3 sẽ tăng
from platform import python_version
13 nếu chúng ta gọi hàm in là Python 2 chiều mà không có dấu ngoặc đơnTrăn 2 #
from platform import python_version
1from platform import python_version
2Trăn 3 #
from platform import python_version
3from platform import python_version
4from platform import python_version
5from platform import python_version
6Ghi chú
In “Xin chào, Thế giới” ở trên thông qua Python 2 trông khá “bình thường”. Tuy nhiên, nếu chúng ta có nhiều đối tượng bên trong dấu ngoặc đơn, chúng ta sẽ tạo một bộ, vì ________ 014 là một “câu lệnh” trong Python 2, không phải là một lệnh gọi hàm
from platform import python_version
8from platform import python_version
9Phép chia số nguyên #
Thay đổi này đặc biệt nguy hiểm nếu bạn đang chuyển mã hoặc nếu bạn đang thực thi mã Python 3 trong Python 2, vì thay đổi trong hành vi chia số nguyên thường có thể không được chú ý [không gây ra lỗi
from platform import python_version
13]. Vì vậy, tôi vẫn có xu hướng sử dụng
from platform import python_version
16 hoặc from platform import python_version
17 thay vì from platform import python_version
18 trong tập lệnh Python 3 của mình để tránh rắc rối cho những người dùng Python 2 [và ngược lại, tôi khuyên bạn nên sử dụng from platform import python_version
19 trong Python 2 của mình . Trăn 2 #
from platform import python_version
0from platform import python_version
1Trăn 3 #
from platform import python_version
2from platform import python_version
3Unicode #
Python 2 có các loại
from platform import python_version
20 ASCII, riêng from platform import python_version
21, nhưng không có loại from platform import python_version
22Bây giờ, trong Python 3, cuối cùng chúng ta cũng có các lớp
from platform import python_version
23 Unicode [utf-8] và 2 byte. from platform import python_version
22 và from platform import python_version
25sTrăn 2 #
from platform import python_version
4from platform import python_version
5from platform import python_version
6from platform import python_version
7from platform import python_version
8from platform import python_version
9from platform import python_version
10from platform import python_version
11from platform import python_version
12from platform import python_version
13Trăn 3 #
from platform import python_version
14from platform import python_version
15from platform import python_version
16from platform import python_version
17from platform import python_version
18from platform import python_version
19from platform import python_version
20from platform import python_version
21xphạm vi #
Việc sử dụng
from platform import python_version
26 rất phổ biến trong Python 2. x để tạo một đối tượng có thể lặp lại, e. g. , trong vòng lặp for hoặc danh sách/bộ-từ điển-hiểu. Hành vi khá giống với trình tạo [i. e. , "đánh giá lười biếng"], nhưng ở đây xrange-iterable không thể sử dụng hết - nghĩa là bạn có thể lặp lại nó vô tận.
Nhờ tính năng "đánh giá lười biếng" của nó, lợi thế của
from platform import python_version
27 thông thường là from platform import python_version
26 thường nhanh hơn nếu bạn chỉ phải lặp lại nó một lần [e. g. , trong vòng lặp for]. Tuy nhiên, trái ngược với lặp lại 1 lần, bạn không nên lặp lại lặp lại nhiều lần, vì việc tạo diễn ra mọi lần từ đầuTrong Python 3,
from platform import python_version
27 đã được triển khai giống như hàm from platform import python_version
26 để hàm from platform import python_version
26 chuyên dụng không còn tồn tại nữa [from platform import python_version
26 tăng giá trị from platform import python_version
33 trong Python 3]from platform import python_version
22Trăn 2 #
from platform import python_version
23from platform import python_version
24Trăn 3 #
from platform import python_version
25from platform import python_version
26from platform import python_version
27from platform import python_version
28Phương thức from platform import python_version
06 cho đối tượng from platform import python_version
07 trong Python 3 #
from platform import python_version
from platform import python_version
Một điều đáng nói nữa là
from platform import python_version
07 có một phương thức from platform import python_version
06 “mới” trong Python 3. x [cảm ơn Yuchen Ying, người đã chỉ ra điều này]. Phương thức from platform import python_version
06 có thể tăng tốc độ “tra cứu” trong Python 3. x from platform import python_version
07 đáng kể cho các loại số nguyên và Booleanfrom platform import python_version
29from platform import python_version
30from platform import python_version
31from platform import python_version
32from platform import python_version
33Dựa trên kết quả
from platform import python_version
40 ở trên, bạn thấy rằng việc thực thi lệnh “tra cứu” nhanh hơn khoảng 60.000 khi nó thuộc loại số nguyên thay vì số float. Tuy nhiên, kể từ Python 2. x's from platform import python_version
07 hoặc from platform import python_version
42 không có phương thức from platform import python_version
06, "tốc độ tra cứu" sẽ không khác nhiều đối với số nguyên hoặc số floatfrom platform import python_version
34from platform import python_version
35Bên dưới "bằng chứng" rằng phương thức
from platform import python_version
44 không được thêm vào Python 2. x chưafrom platform import python_version
36from platform import python_version
37from platform import python_version
38from platform import python_version
39from platform import python_version
40from platform import python_version
41Lưu ý về sự khác biệt về tốc độ trong Python 2 và 3 #
Một số người đã chỉ ra sự khác biệt về tốc độ giữa
from platform import python_version
27 của Python 3 và from platform import python_version
26 của Python2. Vì chúng được triển khai theo cùng một cách nên người ta mong đợi cùng một tốc độ. Tuy nhiên, sự khác biệt ở đây chỉ đến từ việc Python 3 thường có xu hướng chạy chậm hơn Python 2from platform import python_version
42from platform import python_version
43from platform import python_version
44from platform import python_version
45from platform import python_version
46Tăng ngoại lệ #
Trong trường hợp Python 2 chấp nhận cả hai ký hiệu, cú pháp 'cũ' và 'mới', thì Python 3 sẽ chặn [và lần lượt tăng
from platform import python_version
13] nếu chúng ta không đặt đối số ngoại lệ trong ngoặc đơnTrăn 2 #
from platform import python_version
4from platform import python_version
5from platform import python_version
49from platform import python_version
50from platform import python_version
51from platform import python_version
52Trăn 3 #
from platform import python_version
53from platform import python_version
54from platform import python_version
49from platform import python_version
56Cách thích hợp để đưa ra một ngoại lệ trong Python 3
from platform import python_version
57from platform import python_version
58Xử lý ngoại lệ #
Ngoài ra, việc xử lý các ngoại lệ đã thay đổi một chút trong Python 3. Trong Python 3, chúng ta phải sử dụng từ khóa “
from platform import python_version
48” ngay bây giờTrăn 2 #
from platform import python_version
59from platform import python_version
60Trăn 3 #
from platform import python_version
61from platform import python_version
62Hàm next[] và. phương pháp tiếp theo [] #
Vì
from platform import python_version
49 [from platform import python_version
50] là một hàm [phương thức] thường được sử dụng như vậy, nên đây là một thay đổi cú pháp khác [hay đúng hơn là thay đổi trong cách triển khai] đáng được đề cập. nơi bạn có thể sử dụng cả cú pháp hàm và phương thức trong Python 2. 7. 5, hàm from platform import python_version
49 là tất cả những gì còn lại trong Python 3 [gọi phương thức from platform import python_version
50 sẽ tạo ra một from platform import python_version
53]Trăn 2 #
from platform import python_version
63from platform import python_version
64Trăn 3 #
from platform import python_version
65from platform import python_version
66from platform import python_version
67from platform import python_version
68Biến vòng lặp for và rò rỉ không gian tên chung #
tin tốt là. Trong Trăn 3. x for-loop biến không rò rỉ vào không gian tên toàn cầu nữa
Điều này quay trở lại một thay đổi đã được thực hiện trong Python 3. x và được mô tả trong Có gì mới trong Python 3. 0 như sau
“Việc hiểu danh sách không còn hỗ trợ dạng cú pháp
from platform import python_version
54. Sử dụng from platform import python_version
55 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ạo from platform import python_version
56 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 quanh. ”Trăn 2 #
from platform import python_version
69from platform import python_version
80Trăn 3 #
from platform import python_version
81from platform import python_version
82So sánh các loại không thể sắp xếp #
Một thay đổi thú vị khác trong Python 3 là một
from platform import python_version
57 được đưa ra dưới dạng cảnh báo nếu chúng ta cố gắng so sánh các loại không thể sắp xếpTrăn 2 #
from platform import python_version
83from platform import python_version
84Trăn 3 #
from platform import python_version
85from platform import python_version
86Phân tích cú pháp đầu vào của người dùng thông qua input[] #
May mắn thay, hàm
from platform import python_version
58 đã được sửa trong Python 3 để nó luôn lưu trữ đầu vào của người dùng dưới dạng đối tượng from platform import python_version
23. Để tránh hành vi nguy hiểm trong Python 2 để đọc các loại khác ngoài from platform import python_version
60, chúng ta phải sử dụng from platform import python_version
61 thay thếTrăn 2 #
from platform import python_version
87Trăn 3 #
from platform import python_version
88Trả về các đối tượng có thể lặp lại thay vì danh sách #
Như chúng ta đã thấy trong phần
from platform import python_version
42, một số hàm và phương thức trả về các đối tượng có thể lặp lại trong Python 3 ngay bây giờ - thay vì danh sách trong Python 2Vì dù sao chúng ta cũng thường chỉ lặp lại những thứ đó một lần, nên tôi nghĩ thay đổi này rất có ý nghĩa để tiết kiệm bộ nhớ. Tuy nhiên, cũng có thể - trái ngược với trình tạo - lặp lại nhiều lần đó nếu cần, nó chỉ không hiệu quả lắm
Và đối với những trường hợp chúng ta thực sự cần các đối tượng
from platform import python_version
63, chúng ta chỉ cần chuyển đổi đối tượng có thể lặp lại thành một from platform import python_version
63 thông qua hàm from platform import python_version
56Trăn 2 #
from platform import python_version
89from platform import python_version
90Trăn 3 #
from platform import python_version
91from platform import python_version
92Một số hàm và phương thức được sử dụng phổ biến hơn không trả về danh sách nữa trong Python 3
66from platform import python_version
67from platform import python_version
68from platform import python_version
phương pháp
69 của từ điểnfrom platform import python_version
phương pháp
70 của từ điểnfrom platform import python_version
phương pháp
71 của từ điểnfrom platform import python_version
Banker's Rounding #
Python 3 đã áp dụng cách làm tròn số thập phân tiêu chuẩn hiện nay khi kết quả là hòa [. 5] ở các chữ số có nghĩa cuối cùng. Bây giờ, trong Python 3, số thập phân được làm tròn thành số chẵn gần nhất. Mặc dù đó là một sự bất tiện đối với tính di động của mã, nhưng đây được cho là cách làm tròn tốt hơn so với làm tròn lên vì nó tránh được sự sai lệch đối với các số lớn. Để biết thêm thông tin, hãy xem các bài viết và đoạn văn xuất sắc của Wikipedia
- https. // vi. wikipedia. org/wiki/Làm tròn#Round_half_to_even
- https. // vi. wikipedia. org/wiki/IEEE_floating_point#Roundings_to_nearest
Trăn 2 #
from platform import python_version
4from platform import python_version
94from platform import python_version
95from platform import python_version
96from platform import python_version
97from platform import python_version
98Trăn 3 #
from platform import python_version
53from platform import python_version
00from platform import python_version
95from platform import python_version
02from platform import python_version
97from platform import python_version
02Các bài viết khác về Python 2 và Python 3 #
Dưới đây là danh sách một số bài viết hay liên quan đến Python 2 và 3 mà tôi muốn giới thiệu dưới dạng phần tiếp theo