Chúng ta nên sử dụng python 2.6 hay 2.7 hoặc 3.x? [đóng cửa]


25

Phiên bản của python mà tôi đang sử dụng là 2.6 và có 2.7 và 3.x. Thông thường tôi sử dụng python cho một số chương trình / đoạn trích nhỏ. Tôi nhận ra có một số khác biệt lớn giữa 2.x và 3.x. Tôi thực sự muốn biết, nếu tôi định thực hiện một dự án lớn hơn với python, tôi nên sử dụng phiên bản nào của python?

Tôi có nên nâng cấp lên 2.7, hoặc lên 3.x hoặc ở lại 2.6?

Quyết định nên dựa trên các điều khoản sau:

  1. Số người dùng trên internet như một cộng đồng. Nhiều người dùng hơn có nghĩa là gói nguồn mở nhiều hơn và sự giúp đỡ từ họ.

  2. Chức năng.

  3. Hỗ trợ từ đội ngũ phát triển chính thức.

  4. Khả năng tương thích cho các mô-đun / gói hiện có.

Cảm ơn!


5
Ai đó có thể chỉ ra bất kỳ thay đổi có lợi được thực hiện bởi python 3.x không?
lamwaiman1988

1
Bạn đề cập rằng bạn biết rằng khả năng tương thích với các mô-đun hiện có là một vấn đề, nhưng bạn không cho chúng tôi biết các mô-đun hiện tại mà mã của bạn dựa vào. Câu hỏi này là khá nhiều không thể trả lời.
Wooble

2
đề ra; khuyến nghị VÀ khỉ đột vs cá mập trong một câu hỏi wow!

3
Câu hỏi này và câu trả lời của nó sẽ chỉ hữu ích trong một cửa sổ nhỏ thời gian. Điều có ý nghĩa bây giờ có thể không có ý nghĩa nhiều một năm kể từ bây giờ khi 3.x trở nên trưởng thành hơn.
Bryan Oakley

Lưu ý rằng (a) câu hỏi vẫn có liên quan trong năm 2014 (ví dụ: RobotFramework không hoạt động với Python 3) và (b) việc đóng câu hỏi này khiến trang này bị cũ vì - mặc dù nó xuất hiện rất cao trên kết quả tìm kiếm của google - câu trả lời mới không thể được đăng.
Bob Stein

Câu trả lời:


27

Tôi muốn đề xuất Python 2.7 cho mình. Đây là phiên bản mới nhất trong loạt Python 2.x. Hầu hết các mô-đun Python được tạo để hoạt động với Python 2.x. Có một phong trào để thử và di chuyển lên Python 3, nhưng bất kỳ mô-đun Python 3 nào cũng được viết cho cả 2 và 3. Hãy nhớ không sử dụng các tính năng cũ không có trong Python 3, để bạn chỉ cần 2to3 mã của mình để làm cho nó chạy trên Python 3.

Nếu bạn đi với Python 3, bạn là một trong những người dùng đầu tiên và bạn có thể sẽ phải bảo người khác tải xuống Python 3 (rất nhiều máy tính sẽ chỉ có Python 2). Mặt khác, các tính năng mới sẽ chỉ đến với Python 3. Python 2 được bảo trì vĩnh viễn. Vì vậy, tôi sẽ không đề nghị vẫn sử dụng Python 2 trong 10 năm.

Nếu bạn muốn theo dõi các gói Python và khả năng tương thích của chúng với Python 3, bạn có thể để mắt đến trang web này: http://python3wos.appspot.com/


django không hỗ trợ 3.x? Vì vậy, người dùng quen thuộc với django chỉ không thể sử dụng 3.x?
lamwaiman1988

thông thường khi một phiên bản mới được phát hành, điều đó có nghĩa là nó tốt hơn phiên bản cũ hơn. Và tại sao python được phát hành trong loạt 2.x và khác trong loạt 3.x? Sự khác biệt thực sự trong họ là gì.
HẤP DẪN

4
Python 3 đã thực hiện một số thay đổi đối với ngôn ngữ có lợi, nhưng chúng không tương thích ngược với một số tính năng trong Python 2. Vì vậy, một số thứ đã bị xóa và một số được thêm vào (và những thứ bị loại bỏ khiến chúng không tương thích).
jsternberg

+1 cho 2.7, tỷ lệ tương thích tốt nhất (ít nhất là đối với các thư viện tôi sử dụng) cho đến khi 3 phổ biến hơn
wildpeaks

@Ashinkn Các thay đổi có thể được tìm thấy ở đây docs.python.org/3.0/whatsnew/3.0.html . Sự thay đổi phá vỡ tính tương thích chính là sự chuyển đổi từ việc sử dụng Unicode (trái ngược với ASCII) làm loại chuỗi mặc định. Trong đó mọi người đã sử dụng các chuỗi dưới dạng byte [] trước khi có một loại bytearray mới được sử dụng thay thế. Ngoài ra, bất kỳ chuỗi 2x nào được xác định rõ ràng là unicode cần phải được thay đổi thành chuỗi thông thường.
Evan Plaice

19

Ý kiến ​​của tôi là chúng ta cần bắt đầu đưa mọi người qua Python 3 và nếu có những thư viện không tương thích với Python 3, chúng ta cần bắt đầu làm cho điều đó không xảy ra.

Python 3 là tương lai của ngôn ngữ và chúng ta viết càng nhiều mã thì càng tốt.


Những gì chúng ta cần là một trình thông dịch duy nhất tương thích với cả hai phiên bản của python và có thể phân tích chúng một cách thông minh. Đó là, thông dịch viên cho biết sẽ biên dịch cả python2 và python3 thành cùng một mã byte để chúng tương thích, cho phép sử dụng python3 với thư viện python2. Nếu C, C ++ và Java có thể làm điều đó, thì Python cũng vậy.
Braden hay nhất

4

Django hiện "thử nghiệm" hỗ trợ Python 3.2+ như bạn có thể thấy từ các bài đăng của họ ở đây .

Cho rằng, và thực tế rằng Python 3.x là tương lai của ngôn ngữ, tôi sẽ nói Python 3 là tốt nhất hiện nay.


2

Đối với mỗi dự án, hãy kiểm tra xem tất cả các thư viện cần thiết cho một dự án đã có hỗ trợ python 3.x hay chưa, sau đó sử dụng python 3.x vì đó là tương lai và đó là phiên bản ổn định chính thức cuối cùng.

Khác sử dụng bất cứ điều gì bạn cần sử dụng để tương thích thư viện.


2

Việc bạn sử dụng Python 2.7 hay Python 3 không thực sự quan trọng Nếu bạn không sử dụng các tính năng cũ trong Python 2.7, bạn chỉ có thể 2to3 mã của mình để chạy mã trên Python 3.


0

Tôi đã ở trong cùng một chiếc thuyền trước đây và đây là những gì tôi tìm thấy. Python 2.6, 2.7 và 3.2 có thể được cài đặt song song bằng MacPorts và có thể dễ dàng chuyển đổi. (Tôi là người dùng Mac). Tìm kiếm các lựa chọn thay thế cho Macports cho nền tảng của bạn.


0

Cho đến khi một cây cầu được phát triển nội tại trong phạm vi 3.x để cho phép sử dụng minh bạch 2,7 gói, việc di chuyển sẽ đầy nguy hiểm vì ngôn ngữ thực sự là tất cả những gì đã được đóng góp cho nó. Xem xét chính thức và độ tinh khiết là không đáng kể trong so sánh. Một cây cầu trong suốt như vậy không có khả năng xảy ra do sự bướng bỉnh phạm tội và coi thường cơ sở người dùng.


Một cây cầu trong suốt như vậy là không thể đạt được. Gói 2to3 và sáu cung cấp cầu nối rộng rãi, nhưng không minh bạch.
Martijn Pieters
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.