Nhiều người dùng Python bắt đầu đang tự hỏi với phiên bản Python nào họ nên bắt đầu. 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ỉ cần đi với 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 điều gì sẽ xảy ra nếu bạn đang bắt đầu một dự án mới và có sự lựa chọn để chọn? Tôi muốn nói rằng hiện tại không có quyền nào đúng hay và sai, miễn là cả Python 2.7.x và Python 3.x hỗ trợ các thư viện mà bạn dự đị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ố đó hoặc nếu bạn dự định chuyển dự án của mình. Xrange Các phần #
2Python 2.7.7
['a', 'b']
a b
Unicode
from __future__ import division
Phương pháp
Python 2.7.7
['a', 'b']
a b
3 cho các đối tượng Python 2.7.7
['a', 'b']
a b
4 trong Python 3
Các biến số vòng và rò rỉ không gian tên toàn cầu | So sánh các loại không thể đặt hàng | 2.2 | Phân tích cú pháp đầu vào của người dùng thông qua đầu vào []: Statically Nested Scopes |
Trả về các đối tượng có thể lặp lại thay vì danh sách | Ngân hàng làm tròn | 2.3 | Thêm các bài viết về Python 2 và Python 3: Simple Generators |
Mô -đun 2 # | Python 3.x đã giới thiệu một số từ khóa và tính năng không tương thích Python 2 có thể được nhập thông qua mô-đun 2 được xây dựng trong Python 2. Nên sử dụng nhập 2 nhập khẩu nếu bạn đang lên kế hoạch hỗ trợ Python 3.x cho mã của bạn. Ví dụ: nếu chúng ta muốn hành vi phân chia số nguyên của Python 3.x trong Python 2, chúng ta có thể nhập nó thông qua | 3.0 | Nhiều tính năng hơn có thể được nhập từ mô -đun 2 được liệt kê trong bảng dưới đây:: Changing the Division Operator
|
tính năng | tùy chọn trong | 3.0 | bắt buộc trong: Imports: Multi-Line and Absolute/Relative |
hiệu ứng | tùy chọn trong | 2.6 | bắt buộc trong: The “with” Statement |
hiệu ứng | Nested_scopes | 3.0 | 2.1.0b1: Make print a function |
PEP 227: Phạm vi lồng nhau tĩnh | Nested_scopes | 3.0 | 2.1.0b1: Bytes literals in Python 3000 |
from platform import python_version
máy phát điện
2.2.0a1
PEP 255: Máy phát điện đơn giản
phân công
print 'Python', python_version[]
print 'Hello, World!'
print['Hello, World!']
print "text", ; print 'print more text on the same line'
2.2.0a2
PEP 238: Thay đổi nhà điều hành bộ phận
print['Python', python_version[]]
print['Hello, World!']
print["some text,", end=""]
print[' print more text on the same line']
Python 3.4.1
Hello, World!
some text, print more text on the same line
File "", line 1
print 'Hello, World!'
^
SyntaxError: invalid syntax
Note:
Tuyệt đối_Import
print 'Python', python_version[]
print['a', 'b']
print 'a', 'b'
Python 2.7.7
['a', 'b']
a b
2.5.0A1
PEP 328: Nhập khẩu: đa dòng và tuyệt đối/tương đối
So, I still tend to use a
print 'Python', python_version[]
print '3 / 2 =', 3 / 2
print '3 // 2 =', 3 // 2
print '3 / 2.0 =', 3 / 2.0
print '3 // 2.0 =', 3 // 2.0
3 or print 'Python', python_version[]
print '3 / 2 =', 3 / 2
print '3 // 2 =', 3 // 2
print '3 / 2.0 =', 3 / 2.0
print '3 // 2.0 =', 3 // 2.0
4 instead of a print 'Python', python_version[]
print '3 / 2 =', 3 / 2
print '3 // 2 =', 3 // 2
print '3 / 2.0 =', 3 / 2.0
print '3 // 2.0 =', 3 // 2.0
5 in my Python 3 scripts to save the Python 2 guys
some trouble [and vice versa, I recommend a print 'Python', python_version[]
print '3 / 2 =', 3 / 2
print '3 // 2 =', 3 // 2
print '3 / 2.0 =', 3 / 2.0
print '3 // 2.0 =', 3 // 2.0
6 in your Python 2 scripts].phân công
print 'Python', python_version[]
print '3 / 2 =', 3 / 2
print '3 // 2 =', 3 // 2
print '3 / 2.0 =', 3 / 2.0
print '3 // 2.0 =', 3 // 2.0
from platform import python_version
0PEP 238: Thay đổi nhà điều hành bộ phận
from platform import python_version
1from platform import python_version
2Tuyệt đối_Import
2.5.0A1
PEP 328: Nhập khẩu: đa dòng và tuyệt đối/tương đối
phân công
from platform import python_version
3from platform import python_version
42.2.0a2
from platform import python_version
6from platform import python_version
7PEP 238: Thay đổi nhà điều hành bộ phận
from platform import python_version
8from platform import python_version
9print 'Python', python_version[]
print 'Hello, World!'
print['Hello, World!']
print "text", ; print 'print more text on the same line'
0print 'Python', python_version[]
print 'Hello, World!'
print['Hello, World!']
print "text", ; print 'print more text on the same line'
1print 'Python', python_version[]
print 'Hello, World!'
print['Hello, World!']
print "text", ; print 'print more text on the same line'
2print 'Python', python_version[]
print 'Hello, World!'
print['Hello, World!']
print "text", ; print 'print more text on the same line'
3print 'Python', python_version[]
print 'Hello, World!'
print['Hello, World!']
print "text", ; print 'print more text on the same line'
4print 'Python', python_version[]
print 'Hello, World!'
print['Hello, World!']
print "text", ; print 'print more text on the same line'
5Tuyệt đối_Import
2.5.0A1
The behavior was quite similar to a generator [i.e., “lazy evaluation”], but here the xrange-iterable is not exhaustible - meaning, you could iterate over it infinitely.
PEP 328: Nhập khẩu: đa dòng và tuyệt đối/tương đối
Trong Python 3,
from platform import python_version
04 đã được triển khai như hàm from platform import python_version
03 để hàm from platform import python_version
03 chuyên dụng không còn tồn tại nữa [from platform import python_version
03 tăng from platform import python_version
10 trong Python 3].print 'Python', python_version[]
print 'Hello, World!'
print['Hello, World!']
print "text", ; print 'print more text on the same line'
6Python 2 #
print 'Python', python_version[]
print 'Hello, World!'
print['Hello, World!']
print "text", ; print 'print more text on the same line'
7print 'Python', python_version[]
print 'Hello, World!'
print['Hello, World!']
print "text", ; print 'print more text on the same line'
8Python 3 #
print 'Python', python_version[]
print 'Hello, World!'
print['Hello, World!']
print "text", ; print 'print more text on the same line'
9Python 2.7.6
Hello, World!
Hello, World!
text print more text on the same line
0Python 2.7.6
Hello, World!
Hello, World!
text print more text on the same line
1 Phương thức Python 2.7.7
['a', 'b']
a b
3 cho các đối tượng Python 2.7.7
['a', 'b']
a b
4 trong Python 3 #
Python 2.7.7
['a', 'b']
a b
Python 2.7.7
['a', 'b']
a b
Một điều đáng nói nữa là
Python 2.7.7
['a', 'b']
a b
4 đã có một phương pháp mới của ____ ____883 trong Python 3.x [nhờ Yuchen Ying, người đã chỉ ra điều này]. Phương pháp Python 2.7.7
['a', 'b']
a b
3 có thể tăng tốc độ tra cứu trong Python 3.x Python 2.7.7
['a', 'b']
a b
4 đáng kể cho các loại số nguyên và boolean.Python 2.7.6
Hello, World!
Hello, World!
text print more text on the same line
2Python 2.7.6
Hello, World!
Hello, World!
text print more text on the same line
3Python 2.7.6
Hello, World!
Hello, World!
text print more text on the same line
4Python 2.7.6
Hello, World!
Hello, World!
text print more text on the same line
5Dựa trên các kết quả
from platform import python_version
17 ở trên, bạn thấy rằng việc thực hiện đối với các bộ phận tìm kiếm trên mạng nhanh hơn khoảng 60.000 khi nó thuộc loại số nguyên chứ không phải là một chiếc phao. Tuy nhiên, vì Python 2.x, Python 2.7.7
['a', 'b']
a b
4 hoặc from platform import python_version
19 không có phương pháp Python 2.7.7
['a', 'b']
a b
3, thì tốc độ tra cứu của Hồi giáo sẽ rất khác nhau đối với các số nguyên hoặc phao:Python 2.7.6
Hello, World!
Hello, World!
text print more text on the same line
6Python 2.7.6
Hello, World!
Hello, World!
text print more text on the same line
7Bên dưới các bằng chứng của người Viking rằng phương pháp
from platform import python_version
21 đã được thêm vào Python 2.x chưa:Python 2.7.6
Hello, World!
Hello, World!
text print more text on the same line
8Python 2.7.6
Hello, World!
Hello, World!
text print more text on the same line
9print['Python', python_version[]]
print['Hello, World!']
print["some text,", end=""]
print[' print more text on the same line']
0print['Python', python_version[]]
print['Hello, World!']
print["some text,", end=""]
print[' print more text on the same line']
1print['Python', python_version[]]
print['Hello, World!']
print["some text,", end=""]
print[' print more text on the same line']
2print['Python', python_version[]]
print['Hello, World!']
print["some text,", end=""]
print[' print more text on the same line']
3Lư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 Python 3, ____ ____104 và Python2, ____103. Vì chúng được thực hiện theo cách tương tự, người ta sẽ mong đợi cùng một tốc độ. Tuy nhiên, sự khác biệt ở đây chỉ xuất phát từ thực tế là Python 3 thường có xu hướng chạy chậm hơn Python 2.
print['Python', python_version[]]
print['Hello, World!']
print["some text,", end=""]
print[' print more text on the same line']
4
print['Python', python_version[]]
print['Hello, World!']
print["some text,", end=""]
print[' print more text on the same line']
5print['Python', python_version[]]
print['Hello, World!']
print["some text,", end=""]
print[' print more text on the same line']
6print['Python', python_version[]]
print['Hello, World!']
print["some text,", end=""]
print[' print more text on the same line']
7print['Python', python_version[]]
print['Hello, World!']
print["some text,", end=""]
print[' print more text on the same line']
8Tăng ngoại lệ #
Trong đó Python 2 chấp nhận cả hai ký hiệu, ’cũ và cú pháp mới, Python 3 nghẹt thở [và lần lượt tăng
print 'Python', python_version[]
print '3 / 2 =', 3 / 2
print '3 // 2 =', 3 // 2
print '3 / 2.0 =', 3 / 2.0
print '3 // 2.0 =', 3 // 2.0
0] nếu chúng ta không gửi đối số ngoại lệ trong ngoặc đơn:Python 2 #
from platform import python_version
3Python 3.4.1
Hello, World!
some text, print more text on the same line
0Python 3.4.1
Hello, World!
some text, print more text on the same line
1Python 3.4.1
Hello, World!
some text, print more text on the same line
2Python 3.4.1
Hello, World!
some text, print more text on the same line
3Python 3 #
Python 3.4.1
Hello, World!
some text, print more text on the same line
4Python 3.4.1
Hello, World!
some text, print more text on the same line
0Python 3.4.1
Hello, World!
some text, print more text on the same line
6Phương thức
Python 2.7.7
['a', 'b']
a b
3 cho các đối tượng Python 2.7.7
['a', 'b']
a b
4 trong Python 3 #Python 3.4.1
Hello, World!
some text, print more text on the same line
7Python 3.4.1
Hello, World!
some text, print more text on the same line
8Một điều đáng nói nữa là Python 2.7.7
['a', 'b']
a b
4 đã có một phương pháp mới của ____ ____883 trong Python 3.x [nhờ Yuchen Ying, người đã chỉ ra điều này]. Phương pháp Python 2.7.7
['a', 'b']
a b
3 có thể tăng tốc độ tra cứu trong Python 3.x Python 2.7.7
['a', 'b']
a b
4 đáng kể cho các loại số nguyên và boolean.
Python 2.7.7
['a', 'b']
a b
Python 2.7.7
['a', 'b']
a b
Python 2.7.7
['a', 'b']
a b
Dựa trên các kết quả
from platform import python_version
17 ở trên, bạn thấy rằng việc thực hiện đối với các bộ phận tìm kiếm trên mạng nhanh hơn khoảng 60.000 khi nó thuộc loại số nguyên chứ không phải là một chiếc phao. Tuy nhiên, vì Python 2.x, Python 2.7.7
['a', 'b']
a b
4 hoặc from platform import python_version
19 không có phương pháp Python 2.7.7
['a', 'b']
a b
3, thì tốc độ tra cứu của Hồi giáo sẽ rất khác nhau đối với các số nguyên hoặc phao:Python 2 #
Python 3.4.1
Hello, World!
some text, print more text on the same line
9 File "", line 1
print 'Hello, World!'
^
SyntaxError: invalid syntax
0Python 3 #
File "", line 1
print 'Hello, World!'
^
SyntaxError: invalid syntax
1 File "", line 1
print 'Hello, World!'
^
SyntaxError: invalid syntax
2 Phương thức Python 2.7.7
['a', 'b']
a b
3 cho các đối tượng Python 2.7.7
['a', 'b']
a b
4 trong Python 3 #
Python 2.7.7
['a', 'b']
a b
Python 2.7.7
['a', 'b']
a b
Một điều đáng nói nữa là
Python 2.7.7
['a', 'b']
a b
4 đã có một phương pháp mới của ____ ____883 trong Python 3.x [nhờ Yuchen Ying, người đã chỉ ra điều này]. Phương pháp Python 2.7.7
['a', 'b']
a b
3 có thể tăng tốc độ tra cứu trong Python 3.x Python 2.7.7
['a', 'b']
a b
4 đáng kể cho các loại số nguyên và boolean.Python 2 #
File "", line 1
print 'Hello, World!'
^
SyntaxError: invalid syntax
3Python 3 #
File "", line 1
print 'Hello, World!'
^
SyntaxError: invalid syntax
4 File "", line 1
print 'Hello, World!'
^
SyntaxError: invalid syntax
5 Phương thức Python 2.7.7
['a', 'b']
a b
3 cho các đối tượng Python 2.7.7
['a', 'b']
a b
4 trong Python 3 #
Python 2.7.7
['a', 'b']
a b
Python 2.7.7
['a', 'b']
a b
Một điều đáng nói nữa là
Python 2.7.7
['a', 'b']
a b
4 đã có một phương pháp mới của ____ ____883 trong Python 3.x [nhờ Yuchen Ying, người đã chỉ ra điều này]. Phương pháp Python 2.7.7
['a', 'b']
a b
3 có thể tăng tốc độ tra cứu trong Python 3.x Python 2.7.7
['a', 'b']
a b
4 đáng kể cho các loại số nguyên và boolean.Dựa trên các kết quả
from platform import python_version
17 ở trên, bạn thấy rằng việc thực hiện đối với các bộ phận tìm kiếm trên mạng nhanh hơn khoảng 60.000 khi nó thuộc loại số nguyên chứ không phải là một chiếc phao. Tuy nhiên, vì Python 2.x, Python 2.7.7
['a', 'b']
a b
4 hoặc from platform import python_version
19 không có phương pháp Python 2.7.7
['a', 'b']
a b
3, thì tốc độ tra cứu của Hồi giáo sẽ rất khác nhau đối với các số nguyên hoặc phao:Bên dưới các bằng chứng của người Viking rằng phương pháp
from platform import python_version
21 đã được thêm vào Python 2.x chưa:Python 2 #
File "", line 1
print 'Hello, World!'
^
SyntaxError: invalid syntax
6 File "", line 1
print 'Hello, World!'
^
SyntaxError: invalid syntax
7Python 3 #
File "", line 1
print 'Hello, World!'
^
SyntaxError: invalid syntax
8 File "", line 1
print 'Hello, World!'
^
SyntaxError: invalid syntax
9Lư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 Python 3, ____ ____104 và Python2, ____103. Vì chúng được thực hiện theo cách tương tự, người ta sẽ mong đợi cùng một tốc độ. Tuy nhiên, sự khác biệt ở đây chỉ xuất phát từ thực tế là Python 3 thường có xu hướng chạy chậm hơn Python 2.
Python 2 #
print 'Python', python_version[]
print['a', 'b']
print 'a', 'b'
0print 'Python', python_version[]
print['a', 'b']
print 'a', 'b'
1Python 3 #
print 'Python', python_version[]
print['a', 'b']
print 'a', 'b'
2print 'Python', python_version[]
print['a', 'b']
print 'a', 'b'
3Tăng ngoại lệ #
Trong đó Python 2 chấp nhận cả hai ký hiệu, ’cũ và cú pháp mới, Python 3 nghẹt thở [và lần lượt tăng
print 'Python', python_version[]
print '3 / 2 =', 3 / 2
print '3 // 2 =', 3 // 2
print '3 / 2.0 =', 3 / 2.0
print '3 // 2.0 =', 3 // 2.0
0] nếu chúng ta không gửi đối số ngoại lệ trong ngoặc đơn:Python 2 #
print 'Python', python_version[]
print['a', 'b']
print 'a', 'b'
4Python 3 #
print 'Python', python_version[]
print['a', 'b']
print 'a', 'b'
5Cách thích hợp để nâng cao ngoại lệ trong Python 3:
Xử lý ngoại lệ #
Ngoài ra việc xử lý các trường hợp 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 của ____ ____125
Hàm tiếp theo [] và phương thức .next [] #
Python 2 #
Vì
from platform import python_version
26 [from platform import python_version
27] là một hàm [phương thức] thường được sử dụng như vậy, đây là một thay đổi cú pháp khác [hoặc thay đổi trong việc thực hiện] đáng nói: nơi bạn có thể sử dụng cả cú pháp chức năng và phương thức trong Python 2.7.5, from platform import python_version
26 Chức năng 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
27 làm tăng from platform import python_version
30].print 'Python', python_version[]
print['a', 'b']
print 'a', 'b'
7Python 3 #
print 'Python', python_version[]
print['a', 'b']
print 'a', 'b'
8print 'Python', python_version[]
print['a', 'b']
print 'a', 'b'
9Các biến số vòng và rò rỉ không gian tên toàn cầu #
43from platform import python_version
44from platform import python_version
45from platform import python_version
Tin tốt là: Trong các biến số Python 3.x for-loop don don rò rỉ vào không gian tên toàn cầu nữa!
Phương pháp từ điển
47from platform import python_version
Phương pháp từ điển
48from platform import python_version
Nhân viên ngân hàng làm tròn #
Python 3 đã áp dụng cách làm tròn số thập phân hiện nay khi nó dẫn đến một mối quan hệ [.5] ở các chữ số quan trọng cuối cùng. Bây giờ, trong Python 3, số thập phân được làm tròn đến số gần nhất. Mặc dù nó là một sự bất tiện cho tính di động của mã, nhưng nó được cho là một cách làm tròn tốt hơn so với làm tròn vì nó tránh được sự thiên vị đối với số lượng lớn. Để biết thêm thông tin, hãy xem các bài viết và đoạn văn Wikipedia xuất sắc:
- //en.wikipedia.org/wiki/Rounding#Round_half_to_even
- //en.wikipedia.org/wiki/IEEE_floating_point#Roundings_to_nearest
Python 2 #
from platform import python_version
3Python 3 #
Python 3.4.1
Hello, World!
some text, print more text on the same line
4Thêm các bài viết 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 như một phần tiếp theo.
// chuyển sang Python 3
Tôi nên sử dụng Python 2 hay Python 3 cho hoạt động phát triển của mình?
Những gì mới trong Python 3.0
Chuyển sang Python 3
Chuyển mã Python 2 sang Python 3
Làm thế nào giữ Python 3 tiến về phía trước
// Pro và Anti Python 3
10 tính năng tuyệt vời của Python mà bạn có thể sử dụng vì bạn từ chối nâng cấp lên Python 3
Mọi thứ bạn không muốn biết về Unicode trong Python 3
Python 3 đang giết chết Python
Python 3 có thể hồi sinh Python
Python 3 là tốt
Cảm ơn bạn đã đọc. Nếu bạn thích nội dung này, bạn cũng có thể tìm thấy tôi trên Twitter, nơi tôi chia sẻ nội dung hữu ích hơn.