Ngôn ngữ lập trình (tiếng Anh: programming language) là ngôn ngữ hình thức bao gồm một tập hợp các lệnh tạo ra nhiều loại đầu ra khác nhau. Ngôn ngữ lập trình được sử dụng trong lập trình máy tính để thực hiện các thuật toán.
Ngôn ngữ lập trình nào phù hợp với mục đích của tôi?
Sự lựa chọn ngôn ngữ lập trình phù hợp phụ thuộc vào mục đích và loại ứng dụng bạn muốn phát triển. Ví dụ, Python thường được sử dụng cho phân tích dữ liệu và trí tuệ nhân tạo. Trong khi JavaScript thường được sử dụng cho phát triển trang web tương tác.
Các thành phần của ngôn ngữ lập trình
Ngôn ngữ lập trình được cấu thành bởi các thành phần sau:
Tổng kết lại, các thành phần của ngôn ngữ lập trình bao gồm cú pháp, từ vựng, cú pháp chương trình, thư viện, trình biên dịch, trình thông dịch và các công cụ hỗ trợ.
Ứng dụng của ngôn ngữ lập trình
Trong thời đại công nghệ phát triển như hiện nay, ngôn ngữ lập trình đã và đang đóng một vai trò quan trọng trong khoa học và cuộc sống con người. Điển hình có thể kể đến như: phát triển các ứng dụng phù hợp, tương thích để hoạt động trên iOS, Android, thiết kế website,…
Các loại ngôn ngữ lập trình đang được sử dụng phổ biến vào cuộc sống nhờ vào tính ứng dụng cao và khả năng phát triển linh hoạt.
Bên cạnh đó, các ứng dụng mà được tạo ra từ ngôn ngữ lập trình vẫn luôn không ngừng cập nhật và đổi mới về tính năng,… với đích đến cuối cùng là mang lại trải nghiệm tốt nhất cho người dùng.
Ngôn ngữ máy (machine language)
Ngôn ngữ máy (machine language) là một tập các chỉ thị được CPU của máy tính trực tiếp thực thi. Mỗi chỉ thị sẽ thực hiện một chức năng xác định. Các chuỗi chỉ thị chính là tất cả các chương trình được thực thi trực tiếp bởi CPU.
Ngôn ngữ máy chính là ngôn ngữ cơ sở cho bộ vi xử lý và được hiển thị hoàn toàn theo dạng mã nhị phân. Các loại ngôn ngữ lập trình khác cuối cùng sẽ được chuyển thành ngôn ngữ máy trước khi hoàn thiện chương trình.
Hợp ngữ (assembly language) được xem là một trong những loại ngôn ngữ lập trình bậc thấp. Hợp ngữ là loại ngôn ngữ lập trình phức tạp, khó nhớ, phụ thuộc vào các loại vi xử lý khác nhau và cần công cụ hợp dịch để có thể dịch ra ngôn ngữ máy.
Mặc dù hợp ngữ được viết bằng từ viết tắt tiếng Anh nhưng hợp ngữ vẫn thua kém các loại ngôn ngữ lập trình khác về mặt vị thế.
Một số thành tố thường thấy khác của một ngôn ngữ lập trình hiện đại
Nhiều ngôn ngữ lập trình hiện đại, nhất là các ngôn ngữ viết cho Windows, thường có cung cấp thêm một số lượng rất lớn các thư viện bao gồm nhiều hàm để hỗ trợ giao diện người dùng và các thiết bị đầu cuối.
Các ngôn ngữ chuẩn thường không đề cập tới sự cung cấp thư viện giúp cho việc thiết lập giao diện đồ họa (graphic interface). Nhưng hầu hết trong các ngôn ngữ hiện đại mà nhà sản xuất cung cấp cho các hệ điều hành đều có thêm thư viện các hàm và các biến toàn cục có thể dùng để nhanh chóng viết mã có giao diện phù hợp.
Tương tự trên, triết lý đằng sau của việc điều khiển theo sự kiện là để hỗ trợ cho việc đồng bộ sử dụng cùng lúc nhiều thiết bị đầu cuối như là chuột, bàn phím, máy in,... Việc nhận một mệnh lệnh từ chuột hay từ bàn phím phải được lập tức đồng bộ và thay đổi giao diện tức thời để cập nhật hoá.
Bản thân một ngôn ngữ sẽ không nói rõ là có hỗ trợ cho tính năng này hay không. Phản ứng và cập nhật dữ liệu theo thời gian thực là một hướng phát triển nhằm đáp ứng các nhu cầu đồng bộ hoá nhanh dữ liệu mà chúng có thể chia sẻ cho nhiều nơi hay là để thỏa mãn nhu cầu cần thiết đồng bộ hóa dữ liệu của các dịch vụ (ngân hàng, hàng không và quân sự chẳng hạn).
Ngoài các hỗ trợ cho các giao diện thì ngày nay hầu hết các hệ điều hành (Linux/UNIX, Netware và Windows) đều có khả năng đa luồng (multithreading) hay đa nhiệm (multitasking). Những khả năng này nâng cao hiệu quả của máy tính. Các ngôn ngữ, do đó thường có thêm các hàm, thủ tục hay các biến cho phép người lập trình tận dụng chúng. Việc viết mã cho kiến trúc đa luồng và đa nhiệm không đơn giản như viết mã cho các hệ thống thông thường. Người lập trình ngoài kỹ năng viết mã, còn phải luyện tập cách xử lý và đồng bộ nhiều thao tác được thi hành đồng thời trong một chương trình mà không gây ra ách tắc hay vi phạm các nguyên tắc quản lý bộ nhớ hay các quy tắc lập trình theo đa luồng hay đa nhiệm.
Lưu ý: Hầu hết các hệ điều hành hỗ trợ kiến trúc đa luồng hay đa nhiệm đều có khả năng thực thi những chương trình được tạo ra từ mã viết theo kiểu thông thường mà không đá động tới các chức năng đa luồng hay đa nhiệm. Điểm khác nhau là khi không dùng tới các ưu điểm đa luồng hay đa nhiệm thì chương trình đó sẽ không tận dụng được ưu thế phần cứng và phần mềm hỗ trợ (thường thì chương trình đó chạy chậm hơn).
Một phương ngữ (tiếng Anh: dialect) của một ngôn ngữ lập trình hay ngôn ngữ trao đổi dữ liệu là một biến thể (tương đổi nhỏ) hay phần mở rộng của ngôn ngữ đó mà không làm thay đổi bản chất bên trong của nó.
Ngôn ngữ lập trình là nhóm ngành được quan tâm hàng đầu. Bài viết này sẽ giúp các bạn hiểu được ngôn ngữ lập trình là gì và giải đáp thắc mắc nên học ngôn ngữ lập trình nào. Cùng tìm hiểu thông qua bài viết dưới đây nhé!
Ngôn ngữ lập trình (programming language) là một tập hợp các quy tắc, cú pháp và ký hiệu được sử dụng để viết mã nguồn cho các chương trình máy tính hoặc phần mềm.
Các ngôn ngữ lập trình cho phép các nhà phát triển viết các hướng dẫn cho máy tính thực hiện các tác vụ nhất định, bao gồm cả tính toán, xử lý dữ liệu, lưu trữ, truy xuất cơ sở dữ liệu và giao tiếp với người dùng.
Mỗi ngôn ngữ lập trình có cú pháp, cách viết khác nhau và được thiết kế để phù hợp với các nhu cầu khác nhau. Các ngôn ngữ lập trình được sử dụng rộng rãi trong việc phát triển phần mềm, ứng dụng web và các sản phẩm khác.
Hằng năm, có hàng ngàn ngôn ngữ lập trình khác nhau được tạo ra. Những ngôn ngữ này có thể là dạng mệnh lệnh hoặc dạng khai báo.
Đặc điểm chung của các ngôn ngữ lập trình
Ngôn ngữ lập trình là các bộ từ vựng, cú pháp và quy tắc để viết chương trình máy tính. Các đặc điểm chung của các ngôn ngữ lập trình bao gồm:
Ngôn ngữ lập trình có thay đổi không?
Các ngôn ngữ lập trình thường được cải tiến và phát triển theo thời gian để đáp ứng các yêu cầu và xu hướng công nghệ mới. Điều này đảm bảo rằng ngôn ngữ lập trình luôn phù hợp với sự phát triển của ngành công nghệ thông tin.
Miko Tech hy vọng qua bài viết các bạn có thể hiểu rõ hơn về ngôn ngữ lập trình và các loại ngôn ngữ phổ biến để cân nhắc chọn cho mình một ngôn ngữ mà mình muốn học nhé! Nếu thấy bài viết hay, hãy chia sẻ đến cho mọi người cùng đọc nhé!
Trần Tiến Duy tốt nghiệp cử nhân chuyên ngành Thương Mại Điện tử tại trường đại học Sư Phạm Kỹ Thuật TPHCM. Từng Phụ trách mảng SEO Website tại nhiều lĩnh vực như giáo dục, công nghệ, thực phẩm, đồ dùng gia dụng, …v.v Trần Tiến Duy hiện đang là Giảng viên Digital Marketing với chuyên môn chính là SEO tại trường Cao Đẳng FPT Tp.HCM. Với hơn 5+ năm kinh nghiệm training & quản lý nhân sự về quản lý các dự án SEO/ Content SEO.
Hiện tại Trần Tiến Duy là SEO Manager tại công ty Miko Tech Agency chuyên về Thiết Kế Website, với sự Quản lý của anh đã đưa Miko Tech trở thành công ty chuyên về Thiết Kế Website thuộc TOP ngành trên nền tảng Internet hiện nay. Ngoài ra anh Trần Tiến Duy còn đào tạo training nhân viên. Ngoài ra anh Trần Tiến Duy còn đào tạo training nhân viên khoá học SEO Website nội bộ cho Doanh nghiệp giúp Doanh Nghiệp tối ưu tốc độ website phát triển kinh doanh mạnh mẽ hơn trong thời đại công nghệ số 4.0 hiện nay.
Anh Trần Tiến Duy còn chia sẻ miễn phí những Tool SEO hiệu quả giúp anh em SEOer tiết kiệm thời gian và được rất nhiều anh em trong giới SEOer và sinh viên sử dụng tại website: trantienduy.com/tool/
Đối với các định nghĩa khác, xem
Python (phát âm tiếng Anh: /ˈpaɪθɑːn/) là ngôn ngữ lập trình bậc cao đa năng. Triết lý thiết kế của nó nhấn mạnh khả năng đọc mã bằng cách sử dụng thụt lề đáng kể.[32]
Python có kiểu động và thu gom rác. Ngôn ngữ này hỗ trợ nhiều mô hình lập trình, bao gồm lập trình cấu trúc (đặc biệt là lập trình thủ tục), lập trình hướng đối tượng và lập trình chức năng. Nó thường được mô tả là ngôn ngữ "bao gồm pin" do có thư viện tiêu chuẩn toàn diện.
Guido van Rossum bắt đầu nghiên cứu Python vào cuối những năm 1980 với tư cách là ngôn ngữ kế thừa cho ngôn ngữ lập trình ABC và phát hành nó lần đầu tiên vào năm 1991 với tên gọi Python 0.9.0.[33]
Python 2.0 được ra mắt vào năm 2000. Python 3.0 được ra mắt vào năm 2008, là bản sửa đổi lớn không hoàn toàn tương thích ngược với các phiên bản trước đó. Python 2.7.18, được phát hành vào năm 2020, là bản phát hành cuối cùng của Python 2.[34]
Python liên tục được xếp hạng là một trong những ngôn ngữ lập trình phổ biến nhất và được sử dụng rộng rãi trong cộng đồng học máy.[35][36][37][38]
Python đã được Guido van Rossum tạo ra vào những năm 1980[39] tại Trung tâm Toán học – Tin học (Centrum Wiskunde & Informatica, CWI) ở Hà Lan như là một ngôn ngữ kế tục ngôn ngữ ABC – một ngôn ngữ được lấy cảm hứng từ SETL,[40] có khả năng xử lí ngoại lệ và giao tiếp với hệ điều hành Amoeba.[41] Nó bắt đầu được triển khai vào tháng 12 năm 1989.[42] Van Rossum đã tự mình gánh vác trách nhiệm cho dự án, với vai trò là nhà phát triển chính, cho đến ngày 12 tháng 7 năm 2018, khi ông thông báo rằng ông sẽ rời bỏ trách nhiệm của ông và cả danh hiệu "Nhà độc tài nhân từ cho cuộc sống" của Python, một danh hiệu mà cộng đồng Python đã trao tặng cho ông vì sự tận tụy lâu dài của ông với vai trò là người ra quyết định chính cho dự án.[43] Vào tháng 1 năm 2019, các nhà phát triển phần lõi Python đã bầu ra một "Hội đồng chèo lái" gồm năm thành viên để dẫn dắt dự án.[44][45]
Python 2.0 được ra mắt vào ngày 16 tháng 10 năm 2000, với nhiều tính năng mới mẻ, bao gồm một bộ dọn rác phát hiện theo chu kỳ và khả năng hỗ trợ Unicode.[46]
Python 3.0 được ra mắt vào ngày mùng 3 tháng 12 năm 2008. Đây là một phiên bản lớn của Python không tương thích ngược hoàn toàn.[47] Nhiều tính năng lớn của nó đã được chuyển mã ngược (backport) về loạt phiên bản Python 2.6.x và 2.7.x.[48] Các bản phát hành của Python 3 có đi kèm với công cụ 2to3, có tác dụng tự động hoá việc dịch mã Python 2 sang Python 3.[49]
Python 3.9.2 và 3.8.8 được xúc tiến[50] vì tất cả các phiên bản trước của Python (bao gồm cả 2.7)[51] gặp một số vấn đề bảo mật, có thể dẫn đến thực thị mã từ xa[52] và "đầu độc" bộ nhớ đệm.[53]
Trong năm 2022, Python 3.10.4 và 3.9.12 được xúc tiến[54] cùng với 3.8.13 và 3.7.13, nguyên nhân là do một vài vấn đề về bảo mật.[55] Khi Python 3.9.13 được phát hành vào tháng Năm năm 2022, loạt phiên bản 3.9 (cùng với loạt 3.8 và 3.7) được thông báo rằng sẽ chỉ nhận được các bản vá bảo mật trong tương lai.[56] Vào ngày 7 tháng Chín năm 2022, bốn bản cập nhật mới được phát hành do có khả năng xảy ra một cuộc tấn công từ chối dịch vụ: 3.10.7, 3.9.14, 3.8.14 và 3.7.14.[57][58]
Tính đến tháng 11 năm 2024,[cập nhật] Python 3.13 là bản phát hành ổn định mới nhất. Một số thay đổi đáng chú ý từ bản 3.12 bao gồm các thay đổi về ngôn ngữ và thư viện chuẩn.[59]
Python là một ngôn ngữ lập trình đa mẫu hình, lập trình hướng đối tượng và lập trình cấu trúc được hỗ trợ hoàn toàn, và nhiều tính năng của nó cũng hỗ trợ lập trình hàm và lập trình hướng khía cạnh (bao gồm siêu lập trình[60] và siêu đối tượng (phương thức thần kỳ)).[61] Các mẫu hình khác cũng được hỗ trợ thông qua các phần mở rộng, bao gồm thiết kế theo hợp đồng[62][63] và lập trình logic.[64]
Python sử dụng kiểu động và một dạng kết hợp giữa đếm tham chiếu và bộ dọn rác kiểm tra theo chu kì để quản lí bộ nhớ.[65] Nó cũng có tính năng phân giải tên động (liên kết muộn), cho phép liên kết các tên biến và phương thức trong quá trình thực thi chương trình.
Thiết kế của Python cung cấp một số tính năng cho lập trình hàm giống như trong ngôn ngữ Lisp. Python có các hàm filter, map và reduce; thông hiểu danh sách (list comprehension), từ điển (dictionary), tập hợp (set), và các biểu thức bộ sinh (generator).[66] Thư viện chuẩn cũng có hai mô đun (itertools và functools) triển khai các công cụ hàm được vay mượn từ Haskell và Standard ML.[67]
Triết lý căn bản của ngôn ngữ Python được trình bày trong tài liệu The Zen of Python (PEP 20), có dạng thơ Haiku, tóm gọn như sau:
Thay vì tích hợp hết tất cả các tính năng vào phần cốt lõi, Python được thiết kế để dễ dàng mở rộng (bằng các mô đun). Tính mô đun nhỏ gọn này đã làm cho Python trở nên phổ biến như là một cách thêm các giao diện lập trình được vào các ứng dụng hiện có. Tầm nhìn của Van Rossum về một ngôn ngữ có phần lõi nhỏ với một thư viện chuẩn rộng lớn và một trình thông dịch dễ dàng mở rộng bắt nguồn từ việc ông nản lòng trước ABC, một ngôn ngữ lập trình tán thành hướng tiếp cận ngược lại.[39] Python thường được mô tả là một ngôn ngữ "tặng kèm pin" nhờ vào thư viện chuẩn bao quát của nó.[68]
Python nỗ lực hướng đến một cú pháp đơn giản hơn, gọn gàng hơn trong khi vẫn cho các nhà phát triển lựa chọn phương pháp viết mã của họ. Đối lập với khẩu hiệu "có nhiều hơn một cách để làm việc này," triết lý thiết kế của Python lại nằm trong châm ngôn "chỉ nên có một— và tốt nhất là chỉ một—cách rõ ràng để làm việc này".[69] Alex Martelli, một Viện sĩ (Fellow) tại Tổ chức Phần mềm Python (Python Software Foundation) và là một tác giả viết sách Python, viết rằng "Mô tả một thứ gì đó là "tài tình" không được coi là một lời khen ngợi trong văn hoá Python."[70]
Các nhà phát triển Python nỗ lực tránh xa việc tối ưu hoá quá sớm và không chấp nhận các bản vá không cải thiện đáng kể tốc độ mà lại làm mất đi tính rõ ràng lên những phần không thiết yếu của bản triển khai tham khảo CPython.[70] Khi cần đến tốc độ, một lập trình viên Python có thể di chuyển các hàm bị giới hạn về thời gian sang các mô đun mở rộng được viết bằng những ngôn ngữ như C, hoặc sử dụng PyPy, một trình biên dịch tức thời. Cython cũng có thể được dùng để phiên dịch một tập lệnh Python sang C và tạo ra các lệnh gọi API ở cấp độ của C trực tiếp vào trình thông dịch Python.
Mục tiêu mà các nhà phát triển Python hướng đến là đem đến niềm vui khi sử dụng ngôn ngữ này. Điều này được thể hiện qua bản thân cái tên – một sự tôn vinh dành cho nhóm hài người Anh Monty Python[71] – và trong một số cách tiếp cận thi thoảng vui tươi trong hướng dẫn và các tài liệu tham khảo, chẳng hạn như một vi dụ có đề cập đến trứng và spam (gợi nhắc đến một tiểu phẩm trong Monty Python) thay cho foo và bar tiêu chuẩn.[72][73]
Một từ ngữ mới phổ biến trong cộng đồng Python là pythonic (đậm chất Python), một từ có thể có nhiều ý nghĩa liên quan đến phong cách lập trình. Nói rằng một phần mã nào đó là pythonic tức là phần mã đó sử dụng tốt các thành ngữ Python, trông tự nhiên hoặc trôi chảy về ngôn ngữ, phù hợp với triết lý tối giản của Python và nhấn mạnh vào tính dễ đọc. Ngược lại, những phần mã khó hiểu hoặc trông như một bản dịch thô từ một ngôn ngữ lập trình khác được gọi là unpythonic (không đậm chất Python).[74][75]
Những người sử dụng và say mê Python, nhất là những người được cho là am hiểu hay có nhiều kinh nghiệm, thường được gọi là các Pythonista.[76][77]
Python là một ngôn ngữ dễ đọc, dễ hiểu. Định dạng của nó rất gọn gàng về mặt trực quan, và nó thường sử dụng các từ khoá tiếng Anh trong khi các ngôn ngữ khác lại sử dụng các dấu câu. Khác với nhiều ngôn ngữ khác, nó không sử dụng các dấu ngoặc nhọn để giới hạn các khối lệnh, và dấu chấm phẩy cuối câu lệnh rất ít khi được sử dụng dù không bị cấm. Nó có ít ngoại lệ cú pháp và trường hợp đặc biệt hơn C và Pascal.[78]
Python sử dụng thụt lề bằng khoảng trắng hoặc ký tự tab thay vì dùng ngoặc nhọn hay các từ khoá để giới hạn khối lệnh. Lề thường được thụt vào sau một câu lệnh và thụt ra để đánh dấu kết thúc khối lệnh hiện tại. Cho nên, cấu trúc trực quan của chương trình sẽ thể hiện một cách chính xác cấu trúc ngữ nghĩa của chương trình đó.[79] Tính năng này thỉnh thoảng cũng được gọi là "quy tắc việt vị", một quy tắc cũng xuất hiện ở một số ngôn ngữ; nhưng trong phần lớn ngôn ngữ thì thụt lề không phụ thuộc vào cú pháp. Cỡ thụt lề được khuyến cáo là bốn dấu cách.[14]
Một số câu lệnh trong Python gồm có:
Câu lệnh gán (=) hoạt động bằng cách liên kết một tên dưới dạng một tham chiếu với một đối tượng được cấp phát động riêng lẻ. Các biến có thể được dùng lại bất cứ lúc nào với bất cứ đối tượng nào. Trong Python, một tên biến chỉ giữ tham chiếu một cách chung chung và không có kiểu dữ liệu cố định đi kèm. Tuy nhiên, tại một thời điểm nhất định, một biến sẽ tham chiếu đến một vài đối tượng có kiểu. Nó được gọi là kiểu động, ngược lại với các ngôn ngữ lập trình kiểu tĩnh với mỗi biến chỉ có thể chứa giá trị của một kiểu nhất định.
Một số biểu thức trong Python tương tự như những biểu thức trong những ngôn ngữ khác chẳng hạn như C và Java, trong khi số khác thì không:
Trong Python các biểu thức và câu lệnh được phân biệt một cách vững chắc, ngược lại với các ngôn ngữ như Common Lisp, Scheme, hay Ruby. Điều này đã dẫn tới nhiều biểu thức và câu lệnh có cùng chức năng. Thí dụ:
Câu lệnh không thể nằm trong biểu thức, vậy nên các loại thông hiểu (gồm cả danh sách) và biểu thức lambda, vốn là các biểu thức, không thể chứa các câu lệnh. Một trường hợp cụ thể là một câu lệnh gán chẳng hạn như a = 1 không thể là một phần của biểu thức điều kiện của một câu lệnh điều kiện. Điều này sẽ giúp tránh được các lỗi viết sai toán tử bằng == bằng toán tử gán = trong câu điều kiện thường thấy ở C. Ví dụ, if (c = 1) { ... } là một đoạn mã C hợp lệ (nhưng chắc là không đúng ý) còn if c = 1: ... sẽ báo lỗi cú pháp trong Python.
Phương thức của đối tượng là một hàm đi kèm với lớp của đối tượng đó. Cú pháp hiện_thể.phương_thức(đối số), đối với các hàm và phương thức bình thường, thức chất là dạng cú pháp đặc biệt của Lớp.phương_thức(hiện_thể, đối số). Các phương thức trong Python có một tham số self được dùng để truy cập dữ liệu của hiện thể (instance), ngược lại với biến bản thân (self haythis) trong một số ngôn ngữ lập trình hướng đối tượng khác (C++, Java, Objective-C, hay Ruby). Ngoại trừ điều này, Python cũng cung cấp các phương thức gạch dưới (do tên của chúng bắt đầu và kết thúc bằng hai dấu gạch dưới), cho phép các lớp do người dùng định nghĩa thay đổi cách các lớp này được xử lý bởi các thao tác của Python chẳng hạn như lấy chiều dài, so sánh, tính toán số học, chuyển đổi kiểu...[91]
Python sử dụng định kiểu vịt (duck typing) và có các đối tượng có kiểu nhưng tên biến thì không có kiểu. Giới hạn về kiểu không được kiểm tra trong lúc biên dịch; thay vào đó. các thao tác lên một đối tượng có thể thất bại, chỉ ra rằng đối tượng đó không thuộc vào kiểu dữ liệu phù hợp. Tuy là định kiểu động, Python cũng là định kiểu mạnh khi không cho phép các thao tác không được định nghĩa rõ ràng (chẳng hạn như cộng một số vào một xâu) thay vì lặng lẽ cố gắng diễn giải thao tác đó.
Python cho phép các lập trình viên định nghĩa các kiểu của riêng mình bằng cách sử dụng lớp, thường được dùng trong lập trình hướng đối tượng. Các hiện thể của một lớp thường được tạo ra bằng cách gọi lớp đó (chẳng hạn như SpamClass() hay EggsClass()), các lớp lại là hiện thể của siêu lớp type (bản thân nó cũng là một hiện thể của chính nó), cho phép siêu lập trình và phản xạ.
Trước phiên bản 3.0, Python có hai loại lớp là kiểu cũ và kiểu mới.[92] Cú pháp của cả hai kiểu đều giống nhau. Sự khác biệt nằm ở chỗ lớp đó có kế thừa từ lớp object một cách trực tiếp hoặc gián tiếp hay không (tất cả các lớp kiểu mới đều kế thừa từ object và là hiện thể của type). Từ phiên bản Python 2.2 trở đi, cả hai loại lớp đều có thể được sử dụng. Lớp kiểu cũ đã bị loại bỏ trong Python 3.0.
Kế hoạch dài hạn là hỗ trợ định kiểu dần dần[93] và từ Python 3.5, cú pháp của ngôn ngữ này cho phép chỉ rõ các kiểu tĩnh nhưng chúng lại không được kiểm tra trong bản triển khai mặc định, CPython. Một trình kiểm tra kiểu tĩnh đang trong quá trình thử nghiệm và tuỳ chọn tên là mypy có hỗ trợ kiểm tra kiểu trong thời gian biên dịch.[94]
^a Không thể được truy cập trực tiếp bằng tên
Python có các kí hiệu thường dùng cho các toán tử số học (+, -, *, /), toán tử chia sàn // và toán tử chia lấy dư % (số dư có thể âm, chẳng hạn như 4 % -3 == -2). Nó cũng có toán tử ** cho phép luỹ thừa, chẳng hạn như 5**3 == 125 và 9**0.5 == 3.0, và toán tử nhân ma trận @.[98] Các toán tử này hoạt động giống như trong toán học truyền thống, với cùng thứ tự tính toán, toán tử trung tố (+ và - cũng có thể làm toán tử một ngôi để biểu diễn số dương và số âm một cách tương ứng).
Phép chia giữa các số nguyên tạo ra kết quả là số phẩy động. Hành vi của phép chia đã thay đổi đáng kể theo thời gian:[99]
Trong thuật ngữ Python, / là phép chia đúng (gọi tắt là phép chia), và // là phép chia sàn. Toán tử / trước phiên bản 3.0 là phép chia cổ điển.[99]
Việc làm tròn về phía âm vô cực, dù khác biệt so với những ngôn ngữ khác, đem lại sự chắc chắn. Ví dụ, phương trình (a + b)//b == a//b + 1 là luôn đúng. Còn phương trình b*(a//b) + a%b == a thì hợp lệ với cả giá trị a dương và âm. Tuy nhiên, duy trì tính hợp lệ của phương trình này cũng đồng nghĩa răng trong khi kết quả của a%b là, đúng như mong đợi, nằm trong nửa khoảng mở [0, b), với b là một số nguyên dương, nó cũng cần phải nằm trong khoảng (b, 0] khi b âm.[100]
Python cung cấp một hàm round để làm tròn một số phẩy động thành số nguyên gần nhất. Để gỡ hoà (với những số có chữ số cuối là 5), Python 3 sử dụng làm tròn thành số chẵn: round(1.5) và round(2.5) đều là 2.[101] Các phiên bản trước 3 làm tròn xa số không: round(0.5) là 1.0, round(-0.5) là −1.0.[102]
Python cho phép sử dụng các biểu thức luận lý với nhiều quan hệ băng nhau theo một cách đồng nhất với cách dùng chung trong toán học. Thí dụ, biểu thức a < b < c kiểm tra xem a có nhỏ hơn b và b có nhỏ hơn c hay không.[103] Các ngôn ngữ dựa trên C sẽ hiểu biểu thức trên khác đi: trong C, biểu thức trên sẽ đánh giá a < b trước tiên, cho ra kết quả 0 hoặc 1, rồi kết quả đó mới được so sánh với c.[104]
Python sử dụng số học có độ chính xác tuỳ ý cho tất cả các thao tác với số nguyên. Kiểu/Lớp Decimal trong mô đun decimal cung cấp số dấu phẩy động thập phân với một độ chính xác tuỳ ý được định trước và một vài chế độ làm tròn.[105] Lớp Fraction trong mô đun fractions cung cấp độ chính xác tuỳ ý cho số hữu tỉ.[106]
Nhờ thư viện toán học rộng lớn của Python và thư viện bên thứ ba NumPy với nhiều tính năng hơn nữa, Python thường được dùng như một ngôn ngữ kịch bản để giải quyết các vấn đề chẳng hạn như thao tác và xử lí dữ liệu số.[107][108]
Nội suy xâu (string interpolation)
Bộ thư viện chuẩn rộng lớn của Python – một trong những điểm mạnh lớn nhất của Python[109] – cung cấp các công cụ phù hợp cho nhiều công việc khác nhau. Với các ứng dụng giao tiếp với Internet, nhiều giao thức và định dạng chuẩn chẳng hạn như MIME and HTTP được hỗ trợ. Nó cũng có chứa các mô đun đành cho việc tạo lập giao diện người dùng đồ hoạ, kết nối với cơ sở dữ liệu quan hệ, sinh số giả ngẫu nhiên, tính toán với số thập phân có độ chính xác tuỳ ý,[110] thao tác với biểu thức chính quy và kiểm thử đơn vị.
Một số phần của thư viện chuẩn nằm trong đặc tả (ví dụ, Giao diện Cổng vào Máy chủ Web (Web Server Gateway Interface hay WSGI) triển khai wsgiref theo PEP 333[111]), nhưng phần lớn mô đun thì không. Chúng được xác định dựa vào mã, tài liệu bên trong và bộ kiểm thử (test suite) của chúng. Tuy nhiên, vì phần lớn thư viện chuẩn là mã Python đa nền tảng, chỉ một vài mô đun cần được chỉnh sửa hoặc viết lại cho các bản triển khai khác nhau.
Tính đến tháng 9 năm 2021,[cập nhật] Python Package Index (PyPI), kho chính thức dành cho các phần mềm Python bên thứ ba, có chứa hơn 329.000[112] gói với nhiều chức năng đa dạng và phong phú, bao gồm:
Phần lớn trình hiện thực Python (kể cả CPython) có chứa một trình lặp đọc–tính–in (REPL), cho phép chúng hoạt động như là một trình thông dịch dòng lệnh mà người dùng sẽ lần lượt nhập các câu lệnh và nhận kết quả ngay lập tức.
Python đì kèm với một môi trường phát triển tích hợp (IDE) được gọi là IDLE, phù hợp với người mới bắt đầu.
Các hệ vỏ khác, bao gồm IDLE và IPython, có thêm khả năng tự hoàn thiện, khôi phục trạng thái phiên, và tô sáng cú pháp.
Ngoài các môi trường phát triển tích hợp trên máy để bàn, còn có những IDE chạy trên trình duyệt web: SageMath (dành cho việc phát triển các chương trình Python liên quan đền toán học và khoa học); PythonAnywhere, một IDE kiêm môi trường chủ nhà; và Canopy IDE, một IDE Python thương mại tập trung vào khoa học tính toán.[113]
CPython là bản triển khai tham khảo của Python. Nó được viết bằng C, đáp ứng tiêu chuẩn C89 vời một vài tính năng C99 chọn lọc (từ khi các phiên bản C mới hơn ra mắt, nó được coi là lỗi thời;[114][115] CPython có chứa phần mở rộng C của riêng nó, nhưng các phần mở rộng bên thứ ba không bị giới hạn bởi các phiên bản C cũ hơn, có thể được cài đặt với C11 hoặc C++[116]). Nó biên dịch các chương trình Python thành một dạng mã byte trung gian, sau đó thực thi mã byte trên máy ảo của nó. CPython được phân phối cùng với một thư viện chuẩn rộng lớn được viết bằng C và Python bản địa (native). Nó có sẵn trên nhiều nền tảng, bao gồm Windows (từ Python 3.9, trình cài đặt Python sẽ không chạy một cách có chủ ý trên Windows 7 và 8;[117][118] Windows XP đã từng được hỗ trợ cho đến Python 3.5) và phần lớn hệ điều hành tương tự Unix hiện đại, bao gồm macOS (và máy Mac Apple M1, kể từ Python 3.9.1, với trình cài đặt thử nghiệm) và hỗ trợ không chính thức cho chẳng hạn như VMS.[119] Tính khả chuyển nền tảng là một trong những ưu tiên sớm nhất của nó, trong khung thời gian Python 1 và Python 2, khi ngay cả OS/2 và Solaris cũng được hỗ trợ;[120] song nhiều hệ điều hành cũng không còn được hỗ trợ nữa.
Có một số trình biên dịch sang những ngôn ngữ đối tượng bậc cao khác từ ngôn ngữ mã nguồn là Python, một tập con giới hạn của Python hoặc một ngôn ngữ tương tự Python:
Sự phát triển của Python được chỉ đạo phần lớn là thông qua quy trình Đề nghị Cải tiến Python (Python Enhancement Proposal, hay PEP), cơ chế chủ yếu để đề nghị các tính năng lớn mới, thu thập ý kiến của cộng đồng về các vấn đề và ghi chép lại các quyết định về thiết kế của Python.[141] Phong cách viết mã của Python nằm trong PEP 8.[14] Các PEP xuất sắc sẽ được xem lại và bình luận bởi cộng đồng Python và hội đồng chèo lái.[141]
Sự cải tiến ngôn ngữ tương ứng với sự phát triển của bản triển khai tham khảo CPython. Danh sách thư python-dev là diễn đàn chính về sự phát triển của ngôn ngữ này. Các vấn đề cụ thể được thảo luận trong hệ theo dõi lỗi Roundup được tổ chức trên bugs.python.org.[142] Sự phát triển ban đầu chỉ xảy ra trên một kho mã nguồn tự làm chủ chạy Mercurial cho đến khi Python di chuyển mã nguồn sang Github vào tháng Một năm 2017.[143]
Các bản phát hành công khai của CPython được chia thành ba loại, được phân biệt theo phần nào của số phiên bản được tăng lên:
Nhiều phiên bản alpha, beta và phiên bản ứng cử cũng được phát hành để xem trước và kiểm thử trước bản phát hành cuối cùng. Mặc dù có một lịch trình sơ bộ cho mỗi bản phát hành, chúng thường được lùi lại nếu mã vẫn chưa sẵn sàng. Đội ngũ phát triển Python giám sát tình trạng của mã bằng các chạy tập kiểm thử đơn vị lớn trong quá trình phát triển.[148]
Hội thảo học thuật lớn nhất của Python là PyCon. Ngoài ra, cũng có các chương trình hướng dẫn Python đặc biệt khác, chẳng hạn như Pyladies.
Python 3.10 không khuyên dùng wstr (sẽ bị loại bỏ từ Python 3.12; nghĩa là các phần mở rộng Python[149] cần được chỉnh sửa khi đó),[150] đông thời thêm tính năng khớp theo mẫu (pattern matching) vào ngôn ngữ.[151]
Kể từ năm 2003, Python luôn được xếp vào một trong số mười ngôn ngữ lập trình phổ biến nhất trong Chỉ số Cộng đồng Lập trình TIOBE, nơi mà tính đến tháng 10 năm 2021[cập nhật], Python là ngôn ngữ phổ biến nhất (đứng trước Java và C).[95] Nó từng được chọn là Ngôn ngữ Lập trình của Năm (vì "có đánh giá tăng cao nhất trong năm") vào các năm 2007, 2010, 2018, và 2020 (chỉ Python là được bốn năm[97]).
Một nghiên cứu thức nghiệm chỉ ra rằng các ngôn ngữ kịch bản, chẳng hạn như Python, cho năng suất cao hơn so với các ngôn ngữ thông thường, chẳng hạn như C và Java, đối với các vấn đề lập trình liên quan đến thao tác xâu và tìm kiếm trong từ điển, đồng thời quả quyết rằng sự tiêu tốn bộ nhớ thường "tốt hơn Java và không quá tệ hơn so với C hay C++".[152]
Các tổ chức lớn sử dụng Python gồm có Wikipedia, Google,[153] Yahoo!,[154] CERN, NASA, Facebook,[155] Amazon, Instagram,[156] Spotify[157] và các tổ chức nhỏ hơn như ILM and ITA. Trang mạng tin tức xã hội Reddit cũng được viết phần lớn bằng Python.[158]
Python có thể đóng vài trò như là một ngôn ngữ kịch bản cho ứng dụng web, chẳng hạn như thông qua mod wsgi đối với máy chủ web Apache.[159] Với Giao diện Cổng vào Máy chủ Web, một API chuẩn đã và đang dần phát triển để tạo điều kiện cho các ứng dụng này. Các bộ khung web như Django, Pylons, Pyramid, TurboGears, web2py, Tornado, Flask, Bottle và Zope hỗ trợ các nhà phát triển trong khâu thiết kế và bảo trì các ứng dụng phức tạp. Pyjs và IronPython có thể được dùng để phát triển phía khách của các ứng dụng dựa trên Ajax. SQLAlchemy có thể được dùng để ánh xạ dữ liệu sang một cơ sở dữ liệu quan hệ. Twisted là một bộ khung dành cho việc giao tiếp giữa các máy tính và được sử dụng bởi Dropbox chẳng hạn.
Các thư viện như NumPy, SciPy và Matplotlib cho phép sử dụng một cách có hiệu quả Python trong tính toán khoa học,[160][161] với các thư viện chuyên ngành chẳng hạn như Biopython và Astropy cung cấp các chức năng miền cụ thể. SageMath là một hệ thống đại số máy tính với một giao diện vở lập trình được trong Python: thư viện của nó trải dài trên nhiều lĩnh vực của toán học, bao gồm đại số, toán tổ hợp, giải tích số, lý thuyết số và vi tích phân.[162] OpenCV có gán kết Python với một tập hợp các tính năng phong phú về thị giác máy tính và xử lý ảnh.[163]
Python thường được sử dụng trong các dự án trí tuệ nhân tạo và học máy với sự giúp đỡ của các thư viện như TensorFlow, Keras, Pytorch và Scikit-learn.[164][165][166][167] Vì là một ngôn ngữ kịch bản với kiến trúc mô đun, cú pháp đơn giản và các công cụ xử lý văn bản phong phú, Python cũng thường được sử dụng trong xử lý ngôn ngữ tự nhiên.
Python có thể được sử dụng để phát triển các giao diện người dùng đồ hoạ (GUI) bằng cách sử dụng các thư viện như Tkinter[168][169], hay để tạo ra trò chơi thông qua các thư viện chẳng hạn như Pygame, một thư viện làm trò chơi 2D.
Python đã được nhúng thành công trong nhiều sản phẩm phần mềm như là một ngôn ngữ kịch bản, bao gồm trong phần mềm phương pháp phần tử hữu hạn chẳng hạn như Abaqus, một trình dựng mô hình tham số 3D giống như FreeCAD, trong các gói hoạt hình 3D chẳng hạn như 3ds Max, Blender, Cinema 4D, Lightwave, Houdini, Maya, Modo, MotionBuilder, Softimage, trong trình tổng hợp hiệu ứng trực quan Nuke, trong các chương trình sửa ảnh 2D như GIMP,[170] Inkscape, Scribus và Paint Shop Pro, và trong các chương trình kí hiệu âm nhạc như trình soạn nhạc và Capella. GNU Debugger sử dụng Python như là một trình in đẹp để thể hiện các cấu trúc phức tạp chẳng hạn như các kiểu chứa (container) trong C++. Esri quảng bá Python là lựa chọn tốt nhất để viết tập lệnh trong ArcGIS. Nó cũng được sử dụng trong một số trò chơi video, và được chọn làm một trong ba ngôn ngữ lập trình có sẵn đầu tiên trong Google App Engine, với hai ngôn ngữ còn lại là Java và Go.
Nhiều hệ điều hành có chứa Python như là một thành phần tiêu chuẩn. Nó đi kèm với hầu hết các bản phân phối Linux,[171] AmigaOS 4 (sử dụng Python 2.7), FreeBSD (dưới dạng gói), NetBSD, OpenBSD (dưới dạng gói) và macOS và có thể được dùng từ dòng lệnh (tức terminal – đầu cuối). Nhiều bản phân phối Linux sử dụng các trình cài đặt được viết bằng Python: Ubuntu sử dụng trình cài đặt Ubiquity, trong khi Red Hat Linux và Fedora sử dụng trình cài đặt Anaconda. Gentoo Linux sử dụng Python trong hệ thống quản lý gói của nó là Portage.
Python còn được sử dụng rộng rãi trong ngành công nghiệp an toàn thông tin, bao gồm phát triển khai thác.
LibreOffice có nhúng Python và dự định sẽ thay thế Java bằng Python. Python Scripting Provider là một tính năng lõi của nó[172] kể từ phiên bản 4.0 phát hành mùng 7 tháng Hai năm 2013.
Thiết kế và triết lý của Python đã ảnh hưởng đến nhiều ngôn ngữ lập trình khác: