Chuyển đến nội dung chính
Python

Python 2 vs 3: Mọi điều bạn cần biết

Trong bài viết này, chúng tôi sẽ đề cập đến những khác biệt chính giữa Python 2 và 3, cái nào tốt hơn và bạn nên chọn cái nào để bắt đầu hành trình khoa học dữ liệu của mình
Javier Canales Luna's photo
Javier Canales Luna
Đã cập nhật · 6 phút đọc

Khám phá cùng AI

ChatGPTClaudePerplexity

Tạo tài khoản miễn phí của bạn

Luyện tập và Lộ trình tiến trình của bạn.

Tiếp Tục Với Google
Bằng cách tiếp tục, bạn chấp nhận Điều khoản sử dụng, Chính sách bảo mật và việc dữ liệu của bạn được lưu trữ tại Hoa Kỳ.

Python 2 vs 3

Nếu bạn đang cân nhắc bước vào lĩnh vực khoa học dữ liệu, hẳn bạn đã nghe đến Python. Python là một ngôn ngữ lập trình mã nguồn mở, đa mục đích, có phạm vi ứng dụng rộng trong khoa học dữ liệu và các lĩnh vực phần mềm khác như phát triển web và trò chơi, an ninh mạng và blockchain. 

Độ phổ biến của Python đã bùng nổ trong những năm gần đây. Nó xếp hạng đầu trong nhiều bảng xếp hạng độ phổ biến ngôn ngữ lập trình, bao gồm chỉ số TIOBE và PYPL. Bạn có thể tìm hiểu thêm về Python được dùng để làm gì trong một bài viết riêng. 

Nhờ cú pháp đơn giản và dễ đọc, Python thường được xem là một trong những ngôn ngữ lập trình dễ học nhất cho người mới. Nếu bạn mới bắt đầu với khoa học dữ liệu và chưa biết nên học ngôn ngữ nào trước, Python là một trong những lựa chọn tốt nhất. Bạn có thể bắt đầu hành trình khoa học dữ liệu của mình ngay bằng cách theo học lộ trình nghề nghiệp Data Scientist with Python tại DataCamp.

Tuy nhiên, mọi thứ có thể khiến bạn hơi bối rối. Bạn có thể cũng đã nghe về Python 2 và 3. Đó là gì? Chẳng phải chỉ có một ngôn ngữ Python thôi sao? Bạn nên học cái nào? Đừng lo: trừ những trường hợp đặc biệt, đến nay, bạn sẽ luôn sử dụng Python 3. Dù vậy, biết rõ điểm khác nhau vẫn luôn có ích. 

Trong các phần sau, chúng tôi sẽ giải thích Python 2 và 3 là gì, những khác biệt chính giữa chúng, và nên học và sử dụng phiên bản nào. 

Python 2 là gì

Python được phát triển vào cuối những năm 1980 bởi Guido van Rossum và lần đầu công bố công khai vào năm 1991. Sau chín năm phát triển và ngày càng phổ biến, Python 2.0 được phát hành vào năm 2000. 

Python 2 đi kèm một đặc tả kỹ thuật hoàn toàn mới gọi là Python Enhancement Proposal (PEP), nhằm đưa ra các hướng dẫn và thực tiễn tốt nhất khi viết mã Python. Nó cũng có các tính năng mới như list comprehension, hỗ trợ Unicode và bộ gom rác phát hiện vòng tham chiếu.

Nhưng thay đổi quan trọng nhất trong Python 2 là ở chính quy trình phát triển. Python được định hình là một ngôn ngữ lập trình dễ học cho người mới bắt đầu. Để đạt mục tiêu đó, nhóm phụ trách phát triển Python –với Guido van Rossum đứng đầu– quyết định chuyển sang một quy trình phát triển minh bạch hơn và có sự hậu thuẫn của cộng đồng.

Python 2 tiếp tục được phát triển theo thời gian. Các phiên bản kế tiếp bổ sung chức năng mới cho ngôn ngữ. Phiên bản cuối cùng của Python 2, phát hành năm 2010, là Python 2.7. Hỗ trợ cho phiên bản này đã kết thúc vào ngày 1 tháng 1 năm 2020. 

Python 3 là gì

Python 3 là thế hệ tiếp theo của ngôn ngữ. Nó được phát hành vào tháng 12 năm 2008 với nhiều cải tiến và tính năng mới. 

Python 3 không chỉ là một phiên bản Python 2 sau khi sửa lỗi. Phiên bản mới đã thay đổi mạnh mẽ ngôn ngữ để giải quyết các vấn đề bảo mật và lỗi thiết kế ở những phiên bản trước. Python 3 có cú pháp mới nhằm loại bỏ mã thừa hoặc lặp lại, tức là những đoạn mã thực hiện cùng một tác vụ theo nhiều cách khác nhau. Bằng cách cung cấp một cách duy nhất, rõ ràng để thực hiện, tính dễ dùng và khả năng đọc của Python 3 đã được cải thiện đáng kể.  

Một số thay đổi lớn trong Python 3 gồm chuyển câu lệnh print thành một hàm tích hợp, cải thiện phép chia số nguyên và cải thiện hỗ trợ Unicode. Bản chất của những thay đổi này khiến Python 3 không tương thích với Python 2, nói cách khác là không tương thích ngược.

Tại sao có các phiên bản Python khác nhau?

Hãy xem một số ví dụ mã để minh họa khác biệt giữa Python 2 và 3!

Hàm print() mới

Câu lệnh print trong Python 2 đã được thay bằng hàm print() trong Python 3, nghĩa là chúng ta phải đặt đối tượng cần in trong dấu ngoặc đơn.

Python 2:

>>> print 'Hello DataCamp'
Hello DataCamp

Python3:

>>> print('Hello Datacamp')
Hello Datacamp

Phép chia số nguyên

Trong Python 2, khi chia các số nguyên, kết quả luôn là số nguyên. Trong Python3, kết quả luôn bao gồm phần thập phân, giúp phép chia trực quan hơn.

Python 2:

>>> 5/2
2

Python 3:

>>> 5/2
2.5

Hỗ trợ Unicode

Trong Python 2, mỗi chuỗi Unicode phải được đánh dấu bằng tiền tố “u” vì mặc định dùng ký tự ASCII. Ngược lại, Python 3 lưu chuỗi dưới dạng Unicode theo mặc định, linh hoạt hơn so với chuỗi ASCII. 

Python 2:

>>> print type("Hello DataCamp!") # this is an ASCII string
<type 'str'>

>>> print type(u"Hello DataCamp!") # this is a Unicode string
<type 'unicode'>

Python 3:

>>> print(type("Hello DataCamp!")) # this is a Unicode string
<class 'str'>

Hàm range

Hàm xrange() trong Python 2 không còn tồn tại ở Python 3. Nó đã được thay bằng hàm range(), vốn có hiệu năng tốt hơn khi lặp qua các dãy.

Python 2:

>>> xrange(1,10)
xrange(1, 10)
>>> type(xrange(1,10))
<type 'xrange'>

Python 3:

>>> range(1,10)
range(1, 10)
>>> type(range(1,10))
<class 'range'>

Trong bảng sau, bạn có thể tìm thấy những khác biệt chính giữa Python 2 và 3.

 

Python 2

Python 3

Ngày phát hành

2000

2008

Cú pháp

Phức tạp hơn và khó diễn giải

Dễ đọc và dễ hiểu 

Hiệu năng

Chậm hơn do lỗi thiết kế

Cải thiện hiệu năng thời gian chạy của mã so với Python 2

Hàm print

print “Welcome to Datacamp”

print (“Welcome to Datacamp”)

Phép chia số nguyên

Kết quả là một giá trị số nguyên. Phần thập phân luôn bị cắt bỏ

Kết quả luôn là một giá trị float

Hỗ trợ Unicode

Mặc định dùng ký tự ASCII. Để lưu giá trị Unicode, bạn cần khai báo bằng “u”

Mặc định lưu trữ chuỗi là Unicode

Range

Hàm xrange() để tạo một dãy số

Hàm range() hiệu quả hơn khi lặp so với xrange()

Tương thích ngược

Tương đối dễ chuyển từ Python 2 sang Python 3.

Python 3 không tương thích ngược với Python 2

Thư viện

Nhiều thư viện cũ cho Python 2 không tương thích tiến

Hầu hết thư viện mới cho Python 3 không thể dùng trong Python 2

Bạn có thể chuyển đổi Python 2 sang 3 không? 

Tiến hóa là một đặc tính thiết yếu của mọi ngôn ngữ lập trình. Ngôn ngữ phát triển theo thời gian để cải thiện hiệu năng và duy trì tính phù hợp với người dùng. Việc chuyển từ Python 2 sang 3 là thay đổi lớn nhất trong lịch sử Python. 

Mặc dù hợp lý khi các công ty và nhà phát triển cuối cùng cũng chuyển mã nguồn sang Python 3 –đặc biệt sau khi kết thúc hỗ trợ cho Python 2–, việc port mã từ phiên bản cũ sang phiên bản mới có thể là một quá trình khó khăn và đáng ngại. Điều này đặc biệt rõ ở Python vì nhiều thư viện Python 2 không tương thích tiến. 

May mắn thay, có một số tài nguyên có thể giúp chuyển đổi mã Python 2 sang Python 3.

  • 2to3: Một chương trình Python nhận mã nguồn Python 2.x và áp dụng một loạt bộ sửa để biến đổi thành mã hợp lệ Python 3.x.
  • Python-Future: Cho phép bạn dùng một mã nguồn sạch, tương thích Python 3.x để hỗ trợ cả Python 2 và Python 3 với chi phí tối thiểu.
  • Six: Thư viện tương thích giữa Python 2 và 3. Nó cung cấp các hàm tiện ích để làm mượt khác biệt giữa các phiên bản với mục tiêu viết mã tương thích với cả hai.

Python 2 vs 3: Cái nào tốt hơn? 

Dù vài năm trước còn gây tranh luận, ngày nay, không còn nghi ngờ gì nữa, Python 3 là lựa chọn tốt hơn. Thứ nhất, Python 2 không còn được hỗ trợ kể từ năm 2020. Vì vậy, hợp lý khi các dự án mới được viết bằng Python 3.x. Thứ hai, vì Python 2 không còn được hỗ trợ, mọi phát triển đều nằm ở phía Python 3. Ngôn ngữ liên tục được cải tiến sau mỗi lần nâng cấp (phiên bản mới nhất là Python 3.10.5, và đã có bản beta Python 3.11 với những tính năng mới quan trọng). 

Trong bối cảnh đó, việc Python 3 được áp dụng rộng rãi là điều dễ hiểu. Theo Khảo sát Nhà phát triển Python 2021 do JetBrains thực hiện, trung bình, tỷ lệ nhà phát triển dùng Python 3 là 95%. Hơn nữa, tỷ lệ người dùng Python 2 giảm 5 điểm phần trăm mỗi năm.

Mức độ áp dụng Python 2 so với Python 3

Adoption of Python 2 vs Python 3

Nguồn: JetBrains

Nên dùng phiên bản Python nào? 

Python 3 là phiên bản tốt nhất hiện nay.  Chọn Python 3 là quyết định an toàn, đặc biệt cho người mới. Kể từ khi ngừng hỗ trợ, Python 2 nhanh chóng hụt hơi, và ngày càng nhiều công ty đang chuyển mã sang Python 3. Với nhu cầu tăng ở nhiều lĩnh vực phần mềm, mức độ sử dụng rộng rãi và kho thư viện cộng đồng đồ sộ, hoàn toàn hợp lý để học Python 3.

Tuy nhiên, cần lưu ý rằng trong một số trường hợp, bạn vẫn sẽ cần dùng Python 2. Thứ nhất, nhiều công ty vẫn có mã kế thừa viết bằng Python 2 khó chuyển sang Python 3. Nếu đó là trường hợp của công ty hoặc dự án bạn đang làm, bạn sẽ cần học Python 2. Thứ hai, có một số lĩnh vực phần mềm như DevOps vẫn yêu cầu Python 2. 

Dù sao đi nữa, nếu bạn đang cân nhắc bắt đầu sự nghiệp trong khoa học dữ liệu, Python 3 là lựa chọn khôn ngoan. Với DataCamp, mọi thứ đã sẵn sàng cho bạn. Hãy xem các khóa học và lộ trình Python của chúng tôi, và bắt đầu hành trình dữ liệu ngay hôm nay!

Câu hỏi thường gặp về Thực hành tốt với Python

Phiên bản Python nào phổ biến hơn?

Python 3 là người chiến thắng không thể tranh cãi, được áp dụng rộng rãi so với Python 2.

Python có phù hợp cho khoa học dữ liệu không?

Những ngôn ngữ lập trình phổ biến nhất cho khoa học dữ liệu là Python và R. DataCamp có một danh mục lớn các khóa học Python sẽ giúp bạn bắt đầu

Phiên bản nào có thời gian chạy tốt hơn?

Có! Trong hầu hết các bài kiểm tra, Python 3 thường nhanh hơn Python 2.

Phiên bản mới nhất của Python 2 là gì?

Python 2.7. Năm 2020, việc hỗ trợ và bảo trì phiên bản này đã chấm dứt.

Tại sao nên nâng cấp lên Python 3?

Python 3 là ngôn ngữ tốt hơn và đi kèm bộ thư viện chuẩn tốt hơn Python 2. Thêm nữa, kể từ năm 2020, ngôn ngữ và thư viện chuẩn chỉ được cải tiến ở Python 3.

Tôi có thể port Python 2 sang Python 3 không?

Có một số tài nguyên  bạn có thể dùng để cập nhật mã lên Python 3, như 2to3, Python-Future và Six.

Tôi có thể cài đặt cả Python 2 và 3 không?

Có. Bạn có thể làm điều đó bằng cách duy trì các môi trường ảo riêng cho Python 2 và 3.

Chủ đề
Python

Các khóa học về Python

Khóa học

Python nâng cao

4 giờ
1.4M
Nâng cao kỹ năng Khoa học dữ liệu của bạn bằng cách tạo trực quan hóa với Matplotlib và thao tác DataFrame bằng pandas.
Xem chi tiếtBắt Đầu Khóa Học

Tạo tài khoản miễn phí của bạn

Luyện tập và Lộ trình tiến trình của bạn.

Tiếp Tục Với Google
Bằng cách tiếp tục, bạn chấp nhận Điều khoản sử dụng, Chính sách bảo mật và việc dữ liệu của bạn được lưu trữ tại Hoa Kỳ.
Xem thêm
Liên quan

blog

Claude Opus 4.6: Tính năng, Điểm chuẩn, Bài kiểm tra thực hành và hơn thế nữa

Mô hình mới nhất của Anthropic dẫn đầu ở mã hóa tác tử và lập luận phức tạp. Thêm vào đó, nó có cửa sổ ngữ cảnh 1M.
Matt Crabtree's photo

Matt Crabtree

10 phút

Xem thêm