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.
Các phần #
Phần
Mô -đun
Python 2.7.7
('a', 'b')
a b
2
Chức năng in
Python 2
Python 3
Phân chia số nguyên
Python 2
Python 3
Phân chia số nguyên
Python 2
Python 3
Phân chia số nguyên
Python 2
Python 3
Phân chia số nguyên
Unicode
Xrange
Python 2
Python 3
Phân chia số nguyên
Python 2
Python 3
Phân chia số nguyên
Python 2
Python 3
Phân chia số nguyên
Python 2
Python 3
Phân chia số nguyên
Python 2
Python 3
Phân chia số nguyên
Python 2
Python 3
Phân chia số nguyên
Python 2
Python 3
Phân chia số nguyên
Python 2
Python 3
Phân chia số nguyên
Unicode
Xrange
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
Lưu ý về sự khác biệt về tốc độ trong Python 2 và 3
Nâng cao ngoại lệ
Xử lý ngoại lệ
Hàm tiếp theo () và phương thức .next ()
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
Python 2.7.7
('a', 'b')
a b
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
Python 2.7.7
('a', 'b')
a b
2 được xây dựng trong Python 2. Nên sử dụng nhập
Python 2.7.7
('a', 'b')
a b
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
Python 2.7.7
('a', 'b')
a b
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
PEP 227: Phạm vi lồng nhau tĩnh
fromplatformimportpython_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
PEP 328: Nhập khẩu: đa dòng và tuyệt đối/tương đối
phân công
fromplatformimportpython_version
3
fromplatformimportpython_version
4
2.2.0a2
fromplatformimportpython_version
6
fromplatformimportpython_version
7
PEP 238: Thay đổi nhà điều hành bộ phận
fromplatformimportpython_version
8
fromplatformimportpython_version
9
print'Python',python_version()print'Hello, World!'print('Hello, World!')print"text",;print'print more text on the same line'
0
print'Python',python_version()print'Hello, World!'print('Hello, World!')print"text",;print'print more text on the same line'
1
print'Python',python_version()print'Hello, World!'print('Hello, World!')print"text",;print'print more text on the same line'
2
print'Python',python_version()print'Hello, World!'print('Hello, World!')print"text",;print'print more text on the same line'
3
print'Python',python_version()print'Hello, World!'print('Hello, World!')print"text",;print'print more text on the same line'
4
print'Python',python_version()print'Hello, World!'print('Hello, World!')print"text",;print'print more text on the same line'
5
Tuyệ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,
fromplatformimportpython_version
04 đã được triển khai như hàm
fromplatformimportpython_version
03 để hàm
fromplatformimportpython_version
03 chuyên dụng không còn tồn tại nữa (
fromplatformimportpython_version
03 tăng
fromplatformimportpython_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'
6
Python 2 #
print'Python',python_version()print'Hello, World!'print('Hello, World!')print"text",;print'print more text on the same line'
7
print'Python',python_version()print'Hello, World!'print('Hello, World!')print"text",;print'print more text on the same line'
8
Python 3 #
print'Python',python_version()print'Hello, World!'print('Hello, World!')print"text",;print'print more text on the same line'
9
Python 2.7.6
Hello, World!
Hello, World!
text print more text on the same line
0
Python 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 #
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
2
Python 2.7.6
Hello, World!
Hello, World!
text print more text on the same line
3
Python 2.7.6
Hello, World!
Hello, World!
text print more text on the same line
4
Python 2.7.6
Hello, World!
Hello, World!
text print more text on the same line
5
Dựa trên các kết quả
fromplatformimportpython_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
fromplatformimportpython_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
6
Python 2.7.6
Hello, World!
Hello, World!
text print more text on the same line
7
Bên dưới các bằng chứng của người Viking rằng phương pháp
fromplatformimportpython_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
8
Python 2.7.6
Hello, World!
Hello, World!
text print more text on the same line
9
print('Python',python_version())print('Hello, World!')print("some text,",end="")print(' print more text on the same line')
0
print('Python',python_version())print('Hello, World!')print("some text,",end="")print(' print more text on the same line')
1
print('Python',python_version())print('Hello, World!')print("some text,",end="")print(' print more text on the same line')
2
print('Python',python_version())print('Hello, World!')print("some text,",end="")print(' print more text on the same line')
3
Lư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')
5
print('Python',python_version())print('Hello, World!')print("some text,",end="")print(' print more text on the same line')
6
print('Python',python_version())print('Hello, World!')print("some text,",end="")print(' print more text on the same line')
7
print('Python',python_version())print('Hello, World!')print("some text,",end="")print(' print more text on the same line')
8
Tă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
0) nếu chúng ta không gửi đối số ngoại lệ trong ngoặc đơn:
Python 2 #
fromplatformimportpython_version
3
Python 3.4.1
Hello, World!
some text, print more text on the same line
0
Python 3.4.1
Hello, World!
some text, print more text on the same line
1
Python 3.4.1
Hello, World!
some text, print more text on the same line
2
Python 3.4.1
Hello, World!
some text, print more text on the same line
3
Python 3 #
Python 3.4.1
Hello, World!
some text, print more text on the same line
4
Python 3.4.1
Hello, World!
some text, print more text on the same line
0
Python 3.4.1
Hello, World!
some text, print more text on the same line
6
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 3.4.1
Hello, World!
some text, print more text on the same line
7
Python 3.4.1
Hello, World!
some text, print more text on the same line
8
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ả
fromplatformimportpython_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
fromplatformimportpython_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
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 #
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ả
fromplatformimportpython_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
fromplatformimportpython_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
Lư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.
Cá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ì
fromplatformimportpython_version
26 (
fromplatformimportpython_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,
fromplatformimportpython_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
Các biến số vòng và rò rỉ không gian tên toàn cầu #
fromplatformimportpython_version
43
fromplatformimportpython_version
44
fromplatformimportpython_version
45
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
fromplatformimportpython_version
47
Phương pháp từ điển
fromplatformimportpython_version
48
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:
Python 3.4.1
Hello, World!
some text, print more text on the same line
4
Thê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.
Sự khác biệt chính giữa Python 2 và 3 là gì?
Python 3 có cú pháp dễ dàng hơn so với Python 2. Rất nhiều thư viện của Python 2 không tương thích về phía trước.Rất nhiều thư viện được tạo ra trong Python 3 để được sử dụng nghiêm ngặt với Python 3. Python 2 không còn được sử dụng kể từ năm 2020.. A lot of libraries of Python 2 are not forward compatible. A lot of libraries are created in Python 3 to be strictly used with Python 3. Python 2 is no longer in use since 2020.
Làm thế nào để bạn biết nếu một tập lệnh là Python 2 hoặc 3?
Nếu bạn muốn xác định xem python2 hay python3 đang chạy, bạn có thể kiểm tra phiên bản chính với sys.version_info.major này.2 có nghĩa là python2 và 3 có nghĩa là python3.sys.version_info.major . 2 means Python2, and 3 means Python3.
Python 2 có in không?
In: Trong Python 2, in Print được coi là một tuyên bố chứ không phải là một hàm.Không cần phải bọc văn bản bạn muốn in trong ngoặc đơn, mặc dù bạn có thể nếu bạn muốn.Điều này có thể gây nhầm lẫn, vì hầu hết các hành động khác trong Python sử dụng các hàm yêu cầu các đối số được đặt bên trong dấu ngoặc đơn.In Python 2, “print” is treated as a statement rather than a function. There is no need to wrap the text you want to print in parentheses, although you can if you want. This can be confusing, as most other actions in Python use functions that require the arguments to be placed inside parentheses.
Print () có được hỗ trợ trong Python 3 không?
Tuyên bố in đã biến mất trong Python 3;Trình biên dịch không hỗ trợ nó nữa.; the compiler doesn't support it anymore.