Trở về đầu

foto1 foto2 foto3 foto4 foto5
Giảng viên
Nguyễn Tô Sơn - Thủ khoa Đại học Sư phạm Hà Nội
ĐT: 091.333.2869

HỌC TIN CÙNG THỦ KHOA

Thành công không phải đích đến, mà là cả một hành trình

Tìm kiếm

Giới thiệu

Python là một ngôn ngữ lập trình cực kỳ dễ đọc và linh hoạt. Với một cái tên lấy cảm hứng từ nhóm hài kịch người Anh Monty Python, nó là một mục tiêu quan trọng của nhóm phát triển Python để làm cho ngôn ngữ trở nên thú vị hơn. Dễ dàng thiết lập và được viết theo phong cách tương đối đơn giản với phản hồi ngay lập tức về lỗi, Python là lựa chọn tuyệt vời cho người mới bắt đầu.

Vì Python là một ngôn ngữ đa ngữ - nghĩa là nó hỗ trợ nhiều kiểu lập trình bao gồm cả kịch bản và hướng đối tượng - nó rất tốt cho mục đích sử dụng chung. Ngày càng được sử dụng rộng rãi trong các ngành như United Space Alliance (nhà cung cấp hỗ trợ chính của NASA), và Industrial Light & Magic (VFX và xưởng phim hoạt hình của Lucasfilm), Python cung cấp rất nhiều tiềm năng cho những người tìm kiếm ngôn ngữ lập trình bổ sung.

Được phát triển vào cuối những năm 1980 và được xuất bản lần đầu vào năm 1991, Python được tác giả Guido van Rossum, người vẫn còn rất tích cực trong cộng đồng. Được hình thành như một người kế thừa ngôn ngữ lập trình ABC, lần lặp đầu tiên của Python đã bao gồm xử lý ngoại lệ, chức nănglớp với thừa kế. Khi một diễn đàn thảo luận nhóm tin Usenet quan trọng gọi là comp.lang.python được thành lập vào năm 1994, cơ sở người dùng của Python phát triển, mở đường cho Python trở thành một trong những ngôn ngữ lập trình phổ biến nhất cho phát triển nguồn mở.

Tổng quan chung

Trước khi xem xét các cơ hội tiềm năng liên quan đến â € ”và những khác biệt chính có lập trình giữa" Python 2 và Python 3, hãy xem xét nền tảng của các bản phát hành chính gần đây của Python.

Python 2

Được xuất bản vào cuối năm 2000, Python 2 báo hiệu một quá trình phát triển ngôn ngữ minh bạch và toàn diện hơn các phiên bản trước của Python với việc thực hiện PEP (Đề xuất nâng cao Python), đặc tả kỹ thuật cung cấp thông tin cho các thành viên cộng đồng Python hoặc mô tả một tính năng mới của ngôn ngữ.

Ngoài ra, Python 2 còn bao gồm nhiều tính năng có lập trình khác bao gồm bộ thu gom chu trình phát hiện chu kỳ để tự động quản lý bộ nhớ, tăng hỗ trợ Unicode để chuẩn hóa ký tự và danh sách để tạo danh sách dựa trên danh sách hiện có. Khi Python 2 tiếp tục phát triển, nhiều tính năng được thêm vào, bao gồm việc thống nhất các loại và lớp của Python thành một phân cấp trong Python phiên bản 2.2.

Python 3

Python 3 được coi là tương lai của Python và là phiên bản của ngôn ngữ hiện đang được phát triển. Một đại tu lớn, Python 3 đã được phát hành vào cuối năm 2008 để giải quyết và sửa đổi các lỗi thiết kế nội tại của các phiên bản trước của ngôn ngữ. Trọng tâm của phát triển Python 3 là làm sạch codebase và loại bỏ dự phòng, làm cho nó rõ ràng rằng chỉ có một cách để thực hiện một nhiệm vụ nhất định.

Các sửa đổi lớn đối với Python 3.0 bao gồm thay đổi print tuyên bố thành một hàm dựng sẵn, cải thiện cách phân tách số nguyên và cung cấp thêm hỗ trợ Unicode.

Lúc đầu, Python 3 đã được chấp nhận chậm do ngôn ngữ không tương thích ngược với Python 2, yêu cầu mọi người đưa ra quyết định về phiên bản ngôn ngữ để sử dụng. Ngoài ra, nhiều thư viện gói chỉ có sẵn cho Python 2, nhưng khi nhóm phát triển đằng sau Python 3 đã nhắc lại rằng có một phần cuối của sự hỗ trợ Python 2, nhiều thư viện hơn đã được chuyển sang Python 3. Việc sử dụng Python 3 càng tăng được hiển thị bằng số gói Python hiện cung cấp hỗ trợ Python 3, tại thời điểm viết bao gồm 339 trong số 360 gói Python phổ biến nhất.

Python 2,7

Sau bản phát hành Python 3.0 năm 2008, Python 2.7 đã được xuất bản vào ngày 3 tháng 7 năm 2010 và được lên kế hoạch là bản phát hành cuối cùng của bản phát hành 2.x. Mục đích của Python 2.7 là giúp người dùng Python 2.x dễ dàng hơn trong việc chuyển các tính năng sang Python 3 bằng cách cung cấp một số biện pháp tương thích giữa hai người. Hỗ trợ khả năng tương thích này bao gồm các mô-đun nâng cao cho phiên bản 2.7 như unittest để hỗ trợ kiểm tra tự động hóa, argparse để phân tích các tùy chọn dòng lệnh và các lớp tiện lợi hơn trong collections.

Do vị trí duy nhất của Python 2.7 là phiên bản giữa các lần lặp lại trước đó của Python 2 và Python 3.0, nó đã tồn tại như một sự lựa chọn rất phổ biến cho các lập trình viên do khả năng tương thích với nhiều thư viện mạnh mẽ. Khi chúng ta nói về Python 2 ngày hôm nay, chúng ta thường đề cập đến bản phát hành Python 2.7 vì đó là phiên bản được sử dụng thường xuyên nhất.

Python 2.7, tuy nhiên, được coi là một ngôn ngữ kế thừa và phát triển liên tục của nó, mà ngày nay chủ yếu bao gồm sửa lỗi, sẽ chấm dứt hoàn toàn vào năm 2020.

Sự khác biệt chính

Trong khi Python 2.7 và Python 3 chia sẻ nhiều khả năng tương tự, chúng không nên được coi là hoàn toàn có thể hoán đổi cho nhau. Mặc dù bạn có thể viết mã tốt và các chương trình hữu ích trong cả hai phiên bản, nhưng đáng để hiểu rằng sẽ có một số khác biệt đáng kể về cú pháp và xử lý mã.

Dưới đây là một vài ví dụ, nhưng bạn nên nhớ rằng bạn có thể sẽ gặp phải nhiều khác biệt về cú pháp khi bạn tiếp tục học Python.

In

Trong Python 2, print được coi là một câu lệnh thay vì một hàm, đó là một lĩnh vực điển hình của sự nhầm lẫn khi nhiều hành động khác trong Python yêu cầu các đối số bên trong dấu ngoặc đơn để thực thi. Nếu bạn muốn bảng điều khiển của mình in ra Sammy the Shark is my favorite sea creature trong Python 2 bạn có thể làm như vậy với những điều sau đây print tuyên bố:

print "Sammy the Shark is my favorite sea creature"

Với Python 3, print() bây giờ được xử lý một cách rõ ràng như một hàm, do đó, để in ra cùng một chuỗi ở trên, bạn có thể làm như vậy đơn giản và dễ dàng bằng cách sử dụng cú pháp của hàm:

print("Sammy the Shark is my favorite sea creature")

Sự thay đổi này làm cho cú pháp của Python phù hợp hơn và cũng làm cho việc thay đổi giữa các chức năng in khác nhau trở nên dễ dàng hơn. Thuận tiện, print() cú pháp cũng tương thích ngược với Python 2.7, vì vậy Python của bạn 3 print() chức năng có thể chạy trong cả hai phiên bản.

Chia với số nguyên

Trong Python 2, bất kỳ số nào bạn nhập mà không có số thập phân được coi là loại lập trình được gọi là số nguyên. Ngay từ cái nhìn đầu tiên, điều này dường như là một cách dễ dàng để xử lý các loại lập trình, khi bạn cố gắng chia các số nguyên với nhau đôi khi bạn mong đợi nhận được câu trả lời với các chữ số thập phân (được gọi là phao), như trong:

5 / 2 = 2.5

Tuy nhiên, trong Python 2 số nguyên đã được gõ mạnh mẽ và sẽ không thay đổi thành một dấu phẩy với số thập phân ngay cả trong trường hợp khi đó sẽ có ý nghĩa trực quan.

Khi hai số ở hai bên của bộ phận / biểu tượng là số nguyên, Python 2 tầng chia để cho thương x số được trả về là số nguyên lớn nhất nhỏ hơn hoặc bằng x. Điều này có nghĩa là khi bạn viết 5 / 2 để chia hai số, Python 2.7 trả về số nguyên lớn nhất nhỏ hơn hoặc bằng 2.5, trong trường hợp này 2:

a = 5 / 2
print a

Output2

Để ghi đè điều này, bạn có thể thêm các vị trí thập phân như trong 5.0 / 2.0 để có được câu trả lời mong đợi 2.5.

Trong Python 3, phân chia số nguyên trở nên trực quan hơn, như trong:

a = 5 / 2
print(a)

Output2.5

Bạn vẫn có thể sử dụng 5.0 / 2.0 trở về 2.5, nhưng nếu bạn muốn làm phân chia sàn, bạn nên sử dụng cú pháp Python 3 của //, như thế này:

b = 5 // 2
print(b)

Output2

Sửa đổi này trong Python 3 được chia bằng các số nguyên trực quan hơn nhiều và là một tính năng không phải tương thích ngược với Python 2.7.

Hỗ trợ Unicode

Khi ngôn ngữ lập trình xử lý chuỗi loại - đó là, một chuỗi các ký tự - họ có thể làm như vậy theo một vài cách khác nhau để máy tính có thể chuyển đổi số thành chữ cái và các ký hiệu khác.

Python 2 sử dụng bảng chữ cái ASCII theo mặc định, vì vậy khi bạn gõ "Hello, Sammy!" Python 2 sẽ xử lý chuỗi như ASCII. Giới hạn trong một vài trăm ký tự ở dạng tốt nhất trong các dạng mở rộng khác nhau, ASCII không phải là một phương pháp rất linh hoạt để mã hóa các ký tự, đặc biệt là các ký tự không phải tiếng Anh.

Để sử dụng mã hóa ký tự Unicode linh hoạt và mạnh mẽ hơn, hỗ trợ hơn 128.000 ký tự trên các tập lệnh và biểu tượng đương đại và lịch sử, bạn sẽ phải nhập u"Hello, Sammy!", với u tiền tố đứng cho Unicode.

Python 3 sử dụng Unicode theo mặc định, giúp tiết kiệm thời gian phát triển của người lập trình và bạn có thể dễ dàng nhập và hiển thị nhiều ký tự hơn trực tiếp vào chương trình của mình. Vì Unicode hỗ trợ tính đa dạng ký tự ngôn ngữ lớn hơn cũng như hiển thị biểu tượng cảm xúc, sử dụng mã hóa ký tự mặc định đảm bảo rằng các thiết bị di động trên khắp thế giới được hỗ trợ trong các dự án phát triển của bạn.

Nếu bạn muốn mã Python 3 tương thích ngược với Python 2, bạn có thể giữ u trước chuỗi của bạn.

Tiếp tục phát triển

Sự khác biệt lớn nhất giữa Python 3 và Python 2 không phải là một cú pháp, nhưng thực tế là Python 2.7 sẽ mất hỗ trợ liên tục vào năm 2020 và Python 3 sẽ tiếp tục được phát triển với nhiều tính năng hơn và nhiều sửa lỗi hơn.

Những phát triển gần đây đã bao gồm định dạng chuỗi ký tự, tùy biến đơn giản hơn tạo lớpvà một cách thức hợp lệ sạch hơn để xử lý phép nhân ma trận.

Việc tiếp tục phát triển Python 3 có nghĩa là các nhà phát triển có thể dựa vào việc khắc phục các vấn đề một cách kịp thời và các chương trình có thể hiệu quả hơn với chức năng tăng được xây dựng theo thời gian.

Các điểm bổ sung cần xem xét

Là một người bắt đầu Python như một lập trình viên mới, hoặc một lập trình viên có kinh nghiệm mới với ngôn ngữ Python, bạn sẽ muốn xem xét những gì bạn đang hy vọng đạt được trong việc học ngôn ngữ.

Nếu bạn đang hy vọng chỉ để học mà không có một dự án thiết lập trong tâm trí, bạn sẽ có khả năng nhất muốn đưa vào tài khoản mà Python 3 sẽ tiếp tục được hỗ trợ và phát triển, trong khi Python 2,7 sẽ không.

Tuy nhiên, nếu bạn dự định tham gia một dự án hiện có, bạn có thể muốn xem phiên bản nào của nhóm Python đang sử dụng, cách một phiên bản khác có thể tương tác với codebase cũ, nếu các gói mà dự án sử dụng được hỗ trợ trong một phiên bản khác nhau và chi tiết triển khai của dự án là gì.

Nếu bạn đang bắt đầu một dự án mà bạn có trong tâm trí, nó sẽ là đáng giá để điều tra những gói nào có sẵn để sử dụng và với phiên bản Python nào chúng tương thích. Như đã nói ở trên, mặc dù các phiên bản trước của Python 3 có ít khả năng tương thích với các thư viện được xây dựng cho các phiên bản Python 2, nhiều phiên bản đã chuyển sang Python 3 hoặc cam kết làm như vậy trong bốn năm tới.

Phần kết luận

Python là một ngôn ngữ lập trình linh hoạt và được viết nhiều tài liệu để tìm hiểu và cho dù bạn chọn làm việc với Python 2 hay Python 3, bạn sẽ có thể làm việc với các dự án phần mềm thú vị.

Mặc dù có một số khác biệt chính, nhưng không quá khó để chuyển từ Python 3 sang Python 2 với một vài chỉnh sửa, và bạn thường sẽ thấy rằng Python 2.7 có thể dễ dàng chạy mã Python 3, đặc biệt là khi bạn bắt đầu. Bạn có thể tìm hiểu thêm về quy trình này bằng cách đọc hướng dẫn Làm thế nào để Port Python 2 Mã để Python 3.

Điều quan trọng cần lưu ý là khi nhiều nhà phát triển và sự chú ý của cộng đồng tập trung vào Python 3, ngôn ngữ sẽ trở nên tinh tế hơn và phù hợp với nhu cầu phát triển của các lập trình viên, và ít hỗ trợ hơn cho Python 2.7.

Theo: DigitalOcean

Giảng viên Nguyễn Tô Sơn, Thủ khoa Đại học Sư phạm Hà Nội. Điện thoại: 091.333.2869