Python (ngôn ngữ lập trình) – Wikipedia tiếng Việt

Python (phát âm tiếng Anh: /ˈpaɪθɑːn/) là một ngôn ngữ lập trình bậc cao cho các mục đích lập trình đa năng, do Guido van Rossum tạo ra và lần đầu ra mắt vào năm 1991. Python được thiết kế với ưu điểm mạnh là dễ đọc, dễ học và dễ nhớ. Python là ngôn ngữ có hình thức rất sáng sủa, cấu trúc rõ ràng, thuận tiện cho người mới học lập trình và là ngôn ngữ lập trình dễ học; được dùng rộng rãi trong phát triển trí tuệ nhân tạo. Cấu trúc của Python còn cho phép người sử dụng viết mã lệnh với số lần gõ phím tối thiểu.[25] Vào tháng 7 năm 2018, van Rossum đã từ chức lãnh đạo trong cộng đồng ngôn ngữ Python sau 30 năm làm việc.[26][27]

Python trọn vẹn tạo kiểu động và dùng chính sách cấp phép bộ nhớ tự động hóa ; do vậy nó tương tự như như Perl, Ruby, Scheme, Smalltalk, và Tcl. Python được tăng trưởng trong một dự án Bất Động Sản mã mở, do tổ chức triển khai phi doanh thu Python Software Foundation quản trị. [ 28 ]Ban đầu, Python được tăng trưởng để chạy trên nền Unix. Nhưng rồi theo thời hạn, Python dần lan rộng ra sang mọi hệ quản lý và điều hành từ MS-DOS đến Mac OS, OS / 2, Windows, Linux và những hệ quản lý khác thuộc họ Unix. Mặc dù sự tăng trưởng của Python có sự góp phần của rất nhiều cá thể, nhưng Guido van Rossum lúc bấy giờ vẫn là tác giả đa phần của Python. Ông giữ vai trò chủ chốt trong việc quyết định hướng tăng trưởng của Python .

Python luôn được xếp hạng vào những ngôn ngữ lập trình phổ biến nhất.[29][30][31][32]

Python đã được Guido van Rossum thai nghén vào những năm 1980 [ 33 ] tại Trung tâm Toán học – Tin học ( Centrum Wiskunde và Informatica, CWI ) ở Hà Lan như là một ngôn từ kế tục ngôn từ ABC – một ngôn từ được lấy cảm hứng từ SETL [ 34 ], có năng lực xử lí ngoại lệ và tiếp xúc với hệ quản lý và điều hành Amoeba. [ 35 ] Nó bất đầu được tiến hành vào tháng Mười Hai năm 1989 [ 36 ]. Van Rossum đã tự mình gánh vác nghĩa vụ và trách nhiệm cho dự án Bất Động Sản, với vai trò là nhà tăng trưởng chính, cho đến ngày 12 tháng Bảy năm 2018, khi ông thông tin rằng ông sẽ rời bỏ nghĩa vụ và trách nhiệm của ông và cả thương hiệu ” Nhà độc tài nhân từ cho đời sống ” của Python, một thương hiệu mà hội đồng Python đã trao tặng cho ông vì sự tận tuỵ vĩnh viễn của ông với vai trò là người ra quyết định hành động chính cho dự án Bất Động Sản. [ 37 ] Vào tháng Một năm 2019, những nhà tăng trưởng 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 Bất Động Sản. [ 38 ] [ 39 ]Python 2.0 được ra đời vào ngày 16 tháng Mười năm 2000, với nhiều tính năng mới lạ, gồm có một bộ dọn rác phát hiện theo chu kỳ luân hồi và năng lực tương hỗ Unicode. [ 40 ]

Python 3.0 được ra mắt vào ngày mùng 3 tháng Mười Hai 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.[41] 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.[42] 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.[43]

Python 3.9.2 và 3.8.8 được thực thi [ 44 ] vì toàn bộ những phiên bản trước của Python ( gồm có cả 2.7 [ 45 ] ) gặp 1 số ít yếu tố bảo mật thông tin, hoàn toàn có thể dẫn đến thực thị mã từ xa [ 46 ] và ” đầu độc ” bộ nhớ đệm. [ 47 ]

Triết lý phong cách thiết kế và tính năng[sửa|sửa mã nguồn]

Python là một ngôn từ lập trình đa mẫu hình. Lập trình hướng đối tượng người tiêu dùng và lập trình cấu trúc được tương hỗ trọn vẹn, và nhiều tính năng của nó cũng tương hỗ lập trình hàm và lập trình hướng góc nhìn ( gồm có siêu lập trình [ 48 ] và siêu đối tượng người dùng ( phương pháp thần kì ) ). [ 49 ] Các mẫu hình khác cũng được tương hỗ trải qua những phần lan rộng ra, gồm có phong cách thiết kế theo hợp đồng [ 50 ] [ 51 ] và lập trình logic. [ 52 ]Python sử dụng kiểu động và một dạng phối 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ớ. [ 53 ] Nó cũng có tính năng phân giải tên động ( link muộn ), được cho phép link những tên biến và phương pháp trong quy 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, mapreduce; 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).[54] Thư viện chuẩn cũng có hai mô đun (itertoolsfunctools) triển khai các công cụ hàm được vay mượn từ Haskell và Standard ML.[55]

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:

  • Đẹp đẽ tốt hơn xấu xí
  • Minh bạch tốt hơn ngầm định
  • Đơn giản tốt hơn phức tạp
  • Phức tạp tốt hơn rắc rối
  • Tính dễ đọc rất quan trọng.

Thay vì tích hợp hết tổng thể những tính năng vào phần cốt lõi, Python được phong cách thiết kế để thuận tiện lan rộng ra ( bằng những mô đun ). Tính mô đun nhỏ gọn này đã làm cho Python trở nên thông dụng như thể một cách thêm những giao diện lập trình được vào những ứng dụng hiện có. Tầm nhìn của Van Rossum về một ngôn từ có phần lõi nhỏ với một thứ viện chuẩn to lớn và một trình thông dịch thuận tiện lan rộng ra bắt nguồn từ việc ông nản lòng trước ABC, một ngôn từ lập trình ưng ý hướng tiếp cận ngược lại [ 33 ]. Python thường được diễn đạt là một ngôn từ ” Tặng kèm pin ” nhờ vào thư viện chuẩn bao quát của nó. [ 56 ]

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”.[57] 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.”[58]

Các nhà tăng trưởng Python nỗ lực tránh xa việc tối ưu hoá quá sớm và không gật đầu những bản vá không cải tổ đáng kể vận 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 thực thi tìm hiểu thêm CPython. [ 58 ] Khi cần đến vận tốc, một lập trình viên Python hoàn toàn có thể vận động và di chuyển những hàm bị số lượng giới hạn về thời hạn sang những mô đun lan rộng ra được viết bằng những ngôn từ như C, hoặc sử dụng PyPy, một trình biên dịch tức thời. Cython cũng hoàn toàn có thể được dùng để phiên dịch một tập lệnh Python sang C và tạo ra những lệnh gọi API ở Lever của C trực tiếp vào trình thông dịch Python .Mục tiêu mà những nhà tăng trưởng Python hướng đến là đem đến niềm vui khi sử dụng ngôn từ này. Điều này được biểu lộ 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 [ 59 ] – và trong 1 số ít cách tiếp cận thi thoảng vui vẻ trong hướng dẫn và những tài liệu tìm hiểu thêm, ví dụ điển hình 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. [ 60 ] [ 61 ]

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).[62][63]

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.[64][65]

Python là một ngôn từ dễ đọc, dễ hiểu. Định dạng của nó rất ngăn nắp về mặt trực quan, và nó thường sử dụng những từ khoá tiếng Anh trong khi những ngôn từ khác lại sử dụng những dấu câu. Khác với nhiều ngôn từ khác, nó không sử dụng những dấu ngoặc nhọn để số lượng giới hạn những 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 quan trọng hơn C và Pascal. [ 66 ]
Python sử dụng thụt lề bằng khoảng chừng trắng hoặc ký tự tab thay vì dùng ngoặc nhọn hay những từ khoá để số lượng 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 để lưu lại 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ẽ bộc lộ một cách đúng chuẩn cấu trúc ngữ nghĩa của chương trình đó. [ 67 ] Tính năng này nhiều lúc cũng được gọi là ” quy tắc việt vị “, mà cũng Open ở 1 số ít ngôn từ, những trong hầu hết ngôn từ thì thụt lề không phụ thuộc vào vào cú pháp. Cỡ thụt lề được khuyến nghị là bốn dấu cách. [ 68 ]

Câu lệnh và luồng tinh chỉnh và điều khiển[sửa|sửa mã nguồn]

Một số câu lệnh trong Python gồm có :

  • Câu lệnh gán, sử dụng một dấu bằng =.
  • Câu lệnh if: thực thi một khối lệnh nếu thoả mãn điều kiện, sử dụng cùng với elseelif (viết tắt của else-if).
  • Câu lệnh for: lặp qua một đối tượng lặp được, gán mỗi phần tử và một biến cục bộ để sử dụng trong khối lệnh của vòng lặp.
  • Câu lệnh while: thực thi một khối lệnh chừng nào điều kiện còn đúng.
  • Câu lệnh try: cho phép bắt ngoại lệ được nâng lên (raise) trong khối lệnh và dùng vế except để xử lý; câu lệnh cũng đảm bảo rằng phần mã dọn dẹp trong khối finally sẽ được chạy dù có lỗi hay không.
  • Câu lệnh raise: được dùng để nâng một ngoại lệ hoặc nâng lại một ngoại lệ đã được bắt từ trước.
  • Câu lệnh class: thực thi một khối lệnh và gắn không gian tên cục bộ của nó vào một lớp, để dùng trong lập trình hướng đối tượng.
  • Câu lệnh def: định nghĩa một hàm hoặc phương thức.
  • Câu lệnh with: bao bọc một khối lệnh bằng một bộ quản lí ngữ cảnh (context manager) (ví dụ như khoá luồng lại trước khi chạy mã rồi mở khoá, hoặc mở một tệp rồi đóng tệp lại), cho phép các hành vi kiểu RAII (sự đạt được tài nguyên là sự khởi tạo) và thay thể cho các câu lệnh try/finally thường thấy.[69]
  • Câu lệnh break: thoát ra khỏi vòng lặp.
  • Câu lệnh continue: bỏ qua lần lặp này và tiếp tục với mục kế tiếp.
  • Câu lệnh del: loại bỏ một biến, tức là tham chiếu từ tên đến giá trị sẽ bị xoá và cố gắng sử dụng biến đó sẽ gây lỗi. Một biến đã bị xoá có thể được gán lại.
  • Câu lệnh pass: đóng vai trò như là một dạng NOP. Câu lệnh này được dùng để tạo các khối lệnh rỗng.
  • Câu lệnh assert: được dùng trong khi gỡ lỗi để kiểm tra điều kiện nên đúng.
  • Câu lệnh yield: trả lại giá trị từ một hàm bộ sinh; bản thân yield cũng là một toán tử. Dạng này được dùng để triển khai các đồng thường trình.
  • Câu lệnh return: trả lại một giá trị từ một hàm hay phương thức.
  • Câu lệnh import: được dùng để nhập các mô đun co các hàm và biến được sử dụng trong chương trình hiện tại.

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ựa như như những biểu thức trong những ngôn từ khác ví dụ điển hình như C và Java, trong khi số khác thì không :
Trong Python những biểu thức và câu lệnh được phân biệt một cách vững chãi, ngược lại với những ngôn từ 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 công dụng. Thí dụ :

  • Thông hiểu danh sách và vòng lặp for
  • Biểu thức điều kiện và khối lệnh if
  • Hàm eval() (đánh giá các biểu thức) và exec() (thực thi các câu lệnh); trong Python 2, exec là một câu lệnh.

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, v.v..[80]

Kiểu tài liệu[sửa|sửa mã nguồn]

220px Python 3. The standard type hierarchy Cấp bậc kiểu tiêu chuẩn trong Python 3Python sử dụng định kiểu vịt và có những đối tượng người tiêu dù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 đó. những thao tác lên một đối tượng người tiêu dùng hoàn toàn có thể thất bại, chỉ ra rằng đối tượng người tiêu dùng đó không thuộc vào kiểu tài liệu tương thích. Tuy là định kiểu động, Python cũng định kiểu mạnh khi không được cho phép những thao tác mà không được định nghĩa rõ ràng ( ví dụ điển hình như cộng 1 số ít vào một xâu ) thay vì lặng lẽ nỗ lực diễn giải thao tác đó .

Python cho phép các lập trình định nghĩa các kiểu của riêng họ 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ũkiểu mới.[81] 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[82] 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 thực hiện 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.[83]

^a Không thể được truy cập trực tiếp bằng tên

Phép tính số học[sửa|sửa mã nguồ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 == 1259**0.5 == 3.0, và toán tử nhân ma trận @ .[87] 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ố (+- 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 những số nguyên tạo ra hiệu quả là số phẩy động. Hành vi của phép chia đã đổi khác đáng kể theo thời hạn : [ 88 ]

  • Python hiện tại (kể từ 3.0) thay đổi / thành phép chia số phẩy động, ví dụ: 5/2 = = 2.5.
  • Python 2.2 đã thay đổi phép chia số nguyên để nó làm tròn về phía âm vô cực, v.d. 7/3 == 2-7/3 == -3. Toán tử chia sàn // đã được giới thiệu. Cho nên 7//3 == 2, -7//3 == -3, 7.5//3 == 2.0-7.5//3 == -3.0. Thêm from __future__ import division sẽ làm cho một mô đun sử dụng quy tắc chia của Python 3.0.
  • Python 2.1 về trước sử dụng hành vi chia kiểu C. Toán tử / là phép chia nguyên nếu cả hai toán hạng là số nguyên, nếu không thì là phép chia số phẩy động. Phép chia nguyên làm tròn về 0, v.d. 7/3 = = 2-7/3 = = -2.

Trong thuật ngữ Python, /phép chia địch thực (gọi tắt là phép chia), và //phép chia sàn. Toán tử / trước phiên bản 3.0 là phép chia cổ điển.[88]

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.[89]

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)round(2.5) đều là 2.[90] Các phiên bản trước 3 làm tròn xa số không: round(0.5)1.0, round(-0.5)−1.0.[91]

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 bb có nhỏ hơn c hay không.[92] 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.[93]

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.[94] Lớp Fraction trong mô đun fractions cung cấp độ chính xác tuỳ ý cho số hữu tỉ.[95]

Nhờ thư viện toán học to lớn của Python và thư viện bên thứ ba NumPy với nhiều tính năng hơn thế nữa, Python thường được dùng như một ngôn từ ngữ cảnh để xử lý những yếu tố ví dụ điển hình như thao tác và xử lí tài liệu số. [ 96 ] [ 97 ]

# dòng chú thích

In giá trị[sửa|sửa mã nguồn]

# Từ Python 3
print( (7 + 8) / 2.0)
print( (2 + 3j) * (4 - 6j) )

Nội suy xâu ( string interpolation )

print(" Hello{ }! ".format(" world ") )
print(" a = {. 2 f } và b = {. 2 f } ".format(a,b) )

Cấu trúc rẽ nhánh[sửa|sửa mã nguồn]

  • Dạng 1:
    if biểu_thức_điều_kiện:
        # lệnh ...
    
  • Dạng 2:
    if biểu_thức_điều_kiện:
        # lệnh ...
    else:
        # lệnh ...
    
  • Dạng 3:
    if biểu_thức_điều_kiện_1:
        # lệnh ... ( được thực thi nếu biểu_thức_điều_kiện_1 là đúng / true )
    elif biểu_thức_điều_kiện_2:
        # lệnh ... ( được thực thi nếu biểu_thức_điều_kiện_1 là sai / false, nhưng biểu_thức_điều_kiện_2 là đúng / true )
    else:
        # lệnh ... ( được triển khai nếu tổng thể những biểu thức điều kiện kèm theo đi kèm if và elif đều sai )
    
  • Khớp theo mẫu, được thêm vào từ bản 3.10.0:
    match biến_1:
        case điều_kiện_1:
            # được thực thi nếu biến_1 = điều_kiện_1
        case điều_kiện_2:
            # được triển khai nếu biến_1 = điều_kiện_2
    

Cấu trúc lặp[sửa|sửa mã nguồn]

while biểu_thức_đúng:
    # lệnh ...
for phần_tử in dãy:
    # lệnh ...

L = [" TP. Hà Nội ", " Hải Phòng Đất Cảng ", " TP Hồ Chí Minh "] for thành_phố in L: print thành_phố for i in range(10) : print i
def tên_hàm (tham_biến_1, tham_biến_2, tham_biến_n) :
    # lệnh ...
    return giá_trị_hàm

Hàm với tham số mặc định :

def luỹ_thừa(x, n=2) :
   " " " Lũy thừa với số mũ mặc định là 2 " " "
   return x* *n

print luỹ_thừa(3)   # 9
print luỹ_thừa(2,3) # 8
class Lớp:
    # ...

class LớpCon(Lớp) :
    " " " LớpCon thừa kế lớp Lớp " " "
    x = 3  # biến thành viên của lớp
    #
    def phương_thức(self, tham_biến) :
        # ...

# khởi tạo
a = LớpCon( )
print(a.x)
print(a.phương_thức(m) )  # m là giá trị gán cho tham biến

Xử lý ngoại lệ[sửa|sửa mã nguồn]

try:
    câu_lệnh
except Loại_Lỗi:
    thông báo lỗi

Bộ thư viện chuẩn to lớn của Python – một trong những điểm mạnh lớn nhất của Python [ 98 ] – phân phối những công cụ tương thích cho nhiều việc làm khác nhau. Với những ứng dụng tiếp xúc với Internet, nhiều giao thức và định dạng chuẩn ví dụ điển hình như MIME and HTTP được tương hỗ. Nó cũng có chứa những mô đun đành cho việc tạo lập giao diện người dùng đồ hoạ, liên kết với cơ sở tài liệu quan hệ, sinh số giả ngẫu nhiên, giám sát với số thập phân có độ đúng mực tuỳ ý [ 99 ], thao tác với biểu thức chính quy và kiểm thử đơn vị chức năng .

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[100]), 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 thực hiện khác nhau.

Tính đến tháng 9 năm 2021, Python Package Index ( PyPI ), kho chính thức dành cho những ứng dụng Python bên thứ ba, có chứa hơn 329.000 [ 101 ] gói với nhiều tính năng phong phú và nhiều mẫu mã, gồm có :

Môi trường tăng trưởng[sửa|sửa mã nguồn]

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 ), được cho phép chúng hoạt động giải trí như thể một trình thông dịch dòng lệnh mà người dùng sẽ lần lượt nhập những câu lệnh và nhận hiệu quả ngay lập tức .Python đì kèm với một môi trường tự nhiên tăng trưởng tịch hợp ( IDE ) được gọi là IDLE, tương thích với người mới khởi đầu .Các hệ vỏ khác, gồm có IDLE và IPython, có thêm năng lực tự triển khai xong, Phục hồi trạng thái phiên, và tô sáng cú pháp .Ngoài những thiên nhiên và môi trường tăng trưởng 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 tăng trưởng những chương trình Python tương quan đền toán học và khoa học ) ; PythonAnywhere, một IDE kiêm thiên nhiên và môi trường chủ nhà ; và Canopy IDE, một IDE Python thương mại tập trung chuyên sâu vào khoa học giám sát. [ 102 ]

Các bản thực thi[sửa|sửa mã nguồn]

Bản triển khai tìm hiểu thêm[sửa|sửa mã nguồn]

CPython là bản triển khai tìm hiểu thêm của Python. Nó được viết bằng C, cung ứng tiêu chuẩn C89 vời một vào tính năng C99 tinh lọc ( từ khi những phiên bản C mới hơn ra đời, nó được coi là lỗi thời ; [ 103 ] [ 104 ] CPython có chứa phần lan rộng ra C của riêng nó, nhưng những phần lan rộng ra bên thứ ba không bị số lượng giới hạn bởi những phiên bản C cũ hơn, hoàn toàn có thể được thiết lập với C11 hoặc C + + [ 105 ] ). Nó biên dịch những chương trình Python thành một dạng mã byte trung gian, mã mà sau đó được thực thi 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 to lớn được viết bằng C và Python địa phương. Có có sẵn trên nhiều nền tảng, gồm có Windows ( từ Python 3.9, trình setup Python sẽ không chạy một cách có chủ ý trên Windows 7 và 8 ; [ 106 ] [ 107 ] Windows XP đã từng được tương hỗ cho đến Python 3.5 ) và hầu hết hệ quản lý tương tự như Unix văn minh, gồm có macOS ( và máy Mac Apple M1, kể từ Python 3.9.1, với trình thiết lập thử nghiệm ) và tương hỗ không chính thức cho ví dụ điển hình như VMS. [ 108 ] 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 hạn Python 1 và Python 2, khi ngay cả OS / 2 và Solaris cũng được tương hỗ ; [ 109 ] tuy nhiên nhiều hệ quản lý và điều hành cũng không còn được tương hỗ nữa .

Các bản triển khai khác[sửa|sửa mã nguồn]

Trình biên dịch chéo sang ngôn từ khác[sửa|sửa mã nguồn]

Có một số ít trình biên dịch sang những ngôn từ đối tượng người dùng bậc cao khác từ ngôn từ mã nguồn là Python, một tập con số lượng giới hạn của Python hoặc một ngôn từ tựa như Python :

  • Cython biên dịch (một tập cha của) Python 2.7 sang C (trong khi phần mã kết quả cũng dùng được trong Python 3 và cả ví dụ như C++).
  • Nuitka biên dịch Python sang C++.[116]
  • Pythran biên dịch một tập con của Python 3 sang C++.[117][118][119]
  • Pyrex (bản mới nhất năm 2010) và Shed Skin (bản mới nhất năm 2013) biên dịch lần lượt sang C và C++.
  • Google's Grumpy (bản mới nhất năm 2017) phiên dịch Python 2 to Go.[120][121][122]
  • IronPython cho phép chạy các chương trình Python 2.7 trên .NET Common Language Runtime.[123]
  • Jython biên dịch Python 2.7 sang mã byte Java, cho phép sử dụng các thư viện Java từ một chương trình Python.[124]
  • Numba sử dụngLLVM để biên dịch một tập con của Python sang mã máy.
  • Brython,[125] Transcrypt[126][127] và Pyjs (bản mới nhất năm 2012) biên dịch Python sang JavaScript.
  • RPython có thể được biên dịch sang C, và được dùng để xây dựng trình thông dịch PyPy của Python.

Là một ngôn từ thông dịch, Python có vận tốc thực thi chậm hơn nhiều lần so với những ngôn từ biên dịch như Fortran hay C. Trong số những ngôn từ thông dịch, Python được nhìn nhận nhanh hơn Ruby và Tcl, nhưng chậm hơn Lua. [ 128 ]

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.[129] Phong cách viết mã của Python nằm trong PEP 8.[68] 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.[129]

Sự nâng cấp cải tiến ngôn từ tương ứng với sự tăng trưởng của bản triển khai tìm hiểu thêm CPython. Danh sách thư python-dev là forum chính về sự tăng trưởng của ngôn từ này. Các yếu tố đơn cử được luận bàn trong hệ theo dõi lỗi Roundup được tổ chức triển khai trên bugs.python.org. [ 130 ] Sự tăng trưởng bắt đầ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. [ 131 ]Các bản phát hành công khai minh bạch 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 :

  • Phiên bản không tương thích ngược: các mã nhiều khả năng sẽ không hoạt động được và cần phải được chuyển mã thủ công. Phần đầu tiên của số phiên bản được tăng lên. Các bản này ít khi được phát hành: phiên bản 3.0 đã được phát hành 8 năm trước bản 2.0.
  • Bản phát hành lớn hay bản phát hành "tính năng": tương thích phần lớn với các phiên bản trước đó nhưng có thêm những tính năng mới. Phần thứ hai của số phiên bản được tăng lên. Bắt đầu từ Python 3.8, các bản phát hành được thông báo là sẽ xảy ra hằng năm.[132][133] Mỗi phiên bản lớn sẽ được hỗ trợ bằng sửa lỗi trong vòng vài năm sau khi nó được phát hành.[134]
  • Phiên bản sửa lỗi: không có tính năng mới, xảy ra mỗi ba tháng và được phát hành khi số lượng lỗi được sửa ngược dòng đủ lớn kể từ bản phát hành cuối. Các lỗ hổng cũng sẽ được vá trong những phiên bản này. Phần thứ ba và phần cuối cùng 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 sau cuối. 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 chuẩn bị. Đội ngũ tăng trưởng Python giám sát thực trạng của mã bằng những chạy tập kiểm thử đơn vị chức năng lớn trong quy trình tăng trưởng. [ 135 ]Hội thảo học thuật lớn nhất của Python là PyCon. Ngoài ra, cũng có những chương trình hướng dẫn Python đặc biệt quan trọng khác, ví dụ điển hình 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[136] cần được chỉnh sửa khi đó),[137] đông thời thêm tính năng khớp theo mẫu (pattern matching) vào ngôn ngữ.[138]

Sự phổ cập[sửa|sửa mã nguồn]

Kể từ năm 2003, Python luôn được xếp vào một trong số mười ngôn từ lập trình thông dụng 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, Python là ngôn từ thông dụng nhất ( đứng trước Java và C ). [ 84 ] Nó từng được chọn là Ngôn ngữ Lập trình của Năm ( vì " có nhìn nhận tăng cao nhất trong năm " ) vào những năm 2007, 2010, 2018, và 2020 ( chỉ Python là được bốn năm [ 86 ] ) .Một điều tra và nghiên cứu thức nghiệm chỉ ra rằng những ngôn từ ngữ cảnh, ví dụ điển hình như Python, cho hiệu suất cao hơn so với những ngôn từ thường thì, ví dụ điển hình như C và Java, so với những yếu tố lập trình tương 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 + + ". [ 139 ]Các tổ chức triển khai lớn sử dụng Python gồm có Wikipedia, Google [ 140 ], Yahoo ! [ 141 ], CERN, NASA, Facebook, [ 142 ] Amazon, Instagram, [ 143 ] Spotify [ 144 ] và những tổ chức triển khai nhỏ hơn như ILM and ITA. Trang mạng tin tức xã hội Reddit cũng được viết hầu hết bằng Python. [ 145 ]
220px Python Powered Được quản lý và vận hành bởi PythonPython hoàn toàn có thể đóng vài trò như thể một ngôn từ ngữ cảnh cho ứng dụng web, ví dụ điển hình như trải qua mod wsgi so với sever web Apache. [ 146 ] Với Giao diện Cổng vào Máy chủ Web, một API chuẩn đã và đang dần tăng trưởng để tạo điều kiện kèm theo cho những ứng dụng này. Các bộ khung web như Django, Pylons, Pyramid, TurboGears, web2py, Tornado, Flask, Bottle và Zope tương hỗ những nhà tăng trưởng trong khâu phong cách thiết kế và bảo dưỡng những ứng dụng phức tạp. Pyjs và IronPython hoàn toàn có thể được dùng để tăng trưởng phía khách của những ứng dụng dựa trên Ajax. SQLAlchemy hoàn toàn có thể được dùng để ánh xạ tài liệu sang một cơ sở tài liệu quan hệ. Twisted là một bộ khung dành cho việc tiếp xúc giữa những máy tính và được sử dụng bởi Dropbox ví dụ điển hình .Các thư viện như NumPy, SciPy và Matplotlib cho phép sử dụng một cách có hiệu suất cao Python trong đo lường và thống kê khoa học, [ 147 ] [ 148 ] với những thư viện chuyên ngành ví dụ điển hình như Biopython và Astropy phân phối những tính năng miền đơn cử. SageMath là một mạng lưới 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 nghành nghề dịch vụ của toán học, gồm có đại số, toán tổng hợp, giải tích số, kim chỉ nan số và vi tích phân. [ 149 ] OpenCV có gán kết Python với một tập hợp những tính năng đa dạng và phong phú về thị giác máy tính và giải quyết và xử lý ảnh. [ 150 ]Python thường được sử dụng trong những dự án Bất Động Sản trí tuệ tự tạo và học máy với sự giúp sức của những thư viện như TensorFlow, Keras, Pytorch và Scikit-learn. [ 151 ] [ 152 ] [ 153 ] [ 154 ] Vì là một ngôn từ ngữ cảnh với kiến trúc mô đun, cú pháp đơn thuần và những công cụ giải quyết và xử lý văn bản đa dạng và phong phú, Python cũng thường được sử dụng trong giải quyết và xử lý ngôn từ tự nhiên .Python hoàn toàn có thể được dùng để tạo ra game show trải qua những thư viện ví dụ điển hình như Pygame, một thư viện làm game show 2D .Python đã được nhúng thành công xuất sắc trong nhiều mẫu sản phẩm ứng dụng như thể một ngôn từ ngữ cảnh, gồm có trong ứng dụng chiêu thức thành phần hữu hạn ví dụ điển hình như Abaqus, một trình dựng quy mô tham số 3D giống như FreeCAD, trong những gói phim hoạt hình 3D ví dụ điển hình như 3 ds 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 những chương trình sửa ảnh 2D như GIMP, [ 155 ] Inkscape, Scribus và Paint Shop Pro, và trong những 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ư thể một trình in đẹp để biểu lộ những cấu trúc phức tạp ví dụ điển hình như những kiểu chứa ( container ) trong C + +. Esri tiếp thị 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ố ít game show video, và được chọn làm một trong ba ngôn từ lập trình có sẵn tiên phong trong Google App Engine, với hai ngôn từ còn lại là Java và Go .Nhiều hệ quản lý và điều hành có chứa Python như thể một thành phần tiêu chuẩn. Nó đi kèm với hầu hết những bản phân phối Linux, [ 156 ] 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à hoàn toàn có thể được dùng từ dòng lệnh ( đầu cuối ). Nhiều bản phân phối Linux sử dụng những trình setup được viết bằng Python : Ubuntu sử dụng trình setup Ubiquity, trong khi Red Hat Linux và Fedora sử dụng trình thiết lập Anaconda. Gentoo Linux sử dụng Python trong mạng lưới hệ thống quản trị gói của nó là Portage .Python còn được sử dụng thoáng đãng trong ngành công nghiệp bảo đảm an toàn thông tin, gồm có tăng trưởng khai thác .

Liên kết ngoài[sửa|sửa mã nguồn]

Viết một bình luận