2009-12-17 34 views
6

Bạn có thể giới thiệu phiên bản Python nào cho một dự án dài hạn (năm)? Nên sử dụng 2.6+ hoặc 3.x đã ổn định chưa? (chỉ các thư viện chuẩn là bắt buộc)Python - Có nên bắt đầu một dự án mới trực tiếp trong Python 3.x không?

CẬP NHẬT: theo các câu trả lời bên dưới, Python 3.x vẫn có các lỗi nghiêm trọng. Vui lòng xem Python's list of bugs.

+2

Sự cố, như thường lệ, là với thư viện của bên thứ ba. – Skilldrick

+0

"Python 3.x vẫn có lỗi nghiêm trọng"? Trong số 32 được đánh dấu "quan trọng", hầu hết dường như là "flaky". Một rò rỉ bộ nhớ dường như thực sự là "quan trọng". Tôi nghĩ rằng "các lỗi nghiêm trọng" có thể là một lời nói quá mức. –

Trả lời

2

Tôi nghĩ nó tóm tắt đến mức độ bạn có thể kiểm soát chặt chẽ môi trường mà ứng dụng của bạn sẽ chạy. Nếu bạn đang sản xuất một phần mềm trong đó khách hàng của bạn sẽ cài đặt 'python' để chạy phần mềm của bạn, thì bạn cũng có thể sử dụng bản phát hành mới nhất (Python 3.x). Nếu bạn đang nhắm mục tiêu các cài đặt python hiện có thì việc chọn tương thích 2,5 hoặc 2,6 sẽ là tốt nhất vì những tính năng này phổ biến hơn.

Python 3.x ổn định. Đó không phải là vấn đề. Vấn đề với nó là khả năng tương thích. Nếu bạn có khả năng sử dụng mới nhất và lớn nhất thì bạn nên sử dụng phiên bản mới. Đối với các dự án mới, 3.x sẽ là lựa chọn hiển nhiên.

+0

Bạn có biết, Python Python sẽ hỗ trợ đúng không đa luồng? – psihodelia

+1

@psihodelia, nếu bạn muốn, không có GIL ngăn CPython tận dụng triệt để bộ xử lý đa lõi mà không cần đến gói đa xử lý, câu trả lời là không, Python 3 sẽ không khắc phục vấn đề AFAIK đó. –

+0

Nó có nghĩa là, ngay cả khi trong N-năm chúng tôi sẽ có nhiều CPU, chỉ có một chủ đề có thể làm những việc tại một thời điểm. Đúng? Rất tệ ... – psihodelia

0

Nếu bạn đang bắt đầu dự án của mình ngay bây giờ và tất cả thư viện của bên thứ ba bạn muốn sử dụng đã được chuyển sang Python 3 và gói hệ điều hành đích (tôi thực sự có nghĩa là phân phối Linux) Python 3, thì chắc chắn.

Hãy tiếp tục, sử dụng Python 3.

4

Không có gì sai với Python 3, nhưng nhiều thư viện chưa được chuyển. Ví dụ, từ PyGame FAQ:

Python 3 hỗ trợ là không đầy đủ và vẫn còn trong giai đoạn phát triển

Và từ NumPy:

Hỗ trợ cho Python 3 được quy hoạch, nhưng chưa được lên kế hoạch .

Tất cả phụ thuộc vào cách thư viện của bên thứ ba quan trọng đối với bạn và liệu chúng có được chuyển hay không.

+1

@Skilldrick, bản phát hành Python 3.0 đã có điều gì đó sai, nếu tôi nhớ lại, đó là hiệu suất vô cùng trong tệp I/O. Nếu đó là sự thật, nó đã được sửa chữa hoàn toàn trong 3.1, hay vẫn còn một số vấn đề hiệu năng khá đáng kể so với Python 2.x? –

+0

Theo điều này, có: http://bugs.python.org/issue4565 – Skilldrick

+1

http://docs.python.org/3.1/whatsnew/3.1.html#optimizations –

4

Điều tốt về Python3 là there is a automatic way to port your programs từ Python2. Nhưng chương trình phải đáp ứng các tiêu chí nhất định.

Tôi nghĩ cách tiếp cận tốt nhất hiện nay là viết mã Python2 và kiểm tra nó trong chế độ kiểm tra Python3 (chạy python -3 program.py). Bằng cách này bạn không phải lo lắng về việc thiếu các thư viện bây giờ và bạn có thể chuyển đổi chương trình của bạn sang Python3 ngay khi điều đó có ý nghĩa.

1

THC4k mentions 2to3 và tôi chỉ muốn chỉ ra rằng cũng có một số 3to2 package. Tôi chưa bao giờ sử dụng một trong hai gói, nhưng tôi đã nghe nói rằng 3to2 là tha thứ hơn 2to3.

Chỉnh sửa: chỉ muốn nhấn mạnh những gì người khác đã đề xuất: Nếu bạn chọn sử dụng một trong các trình chuyển đổi này để phát hành phần mềm của bạn cho 2.6 hoặc 3.0, có thể bạn sẽ muốn có một hệ thống thử nghiệm vững chắc tại chỗ (unittest, doctest, vv) với phạm vi kiểm tra phong nha để ngủ ngon vào ban đêm!

9

Đây là lý do tại sao bạn nên sử dụng Python 3.x:

Python 2.x:

>>>True = False 
>>>True 
False 

Python 3.x:

>>> True = False 
    File "<stdin>", line 1 
SyntaxError: assignment to keyword 

Nguồn: Strangest language feature

Prejudice: Nhưng rất nhiều gói không Python 3 đã sẵn sàng chưa

Đây là (một) không đúng (source) và (b) không quan trọng đối với người mới bắt đầu.

Các vấn đề liên quan