Movatterモバイル変換


[0]ホーム

URL:


Bước tới nội dung
WikipediaBách khoa toàn thư mở
Tìm kiếm

Python (ngôn ngữ lập trình)

Bách khoa toàn thư mở Wikipedia
Đối với các định nghĩa khác, xemPython.
Python (ngôn ngữ lập trình)
Mẫu hìnhMẫu hình lập trình:hướng đối tượng,[1]thủ tục (mệnh lệnh),chức năng,cấu trúc,phản chiếu
Thiết kế bởiGuido van Rossum
Nhà phát triểnQuỹ Phần mềm Python
Xuất hiện lần đầu20 tháng 2 năm 1991; 34 năm trước (1991-02-20)[2]
Phiên bản ổn định
3.13.5 Sửa đổi tại Wikidata / 11 tháng 6 năm 2025 (11 tháng 6 năm 2025)
Kiểm tra kiểuDuck typing (tạm dịch là kiểu vịt), Dynamic typing, Strong typing ;[3] Optional typing (kể từ 3.5, nhưng những gợi ý đó bị bỏ qua, ngoại trừ các công cụ không chính thức[4]
Hệ điều hànhTier 1: 64-bitLinux,macOS; 64- and 32-bitWindows 10+[5]
Tier 2: E.g. 32-bitWebAssembly (WASI)
Tier 3: 64-bitFreeBSD,iOS; e.g.Raspberry Pi OS
Không chính thức (hoặc đã được biết là hoạt động): Các biến thể giống Unix/BSD khác và ví dụ: Android 5.0+ (chính thức được lên kế hoạch từ Python 3.13)[6]) và một số nền tảng khác[7][8][9]
Giấy phépGiấy phép Nền tảng Phần mềm Python
Phần mở rộng tên tập tin.py, .pyw, .pyz,Holth, Moore (ngày 30 tháng 3 năm 2014)."PEP 0441 – Improving Python ZIP Application Support".Lưu trữ bản gốc ngày 26 tháng 12 năm 2018. Truy cập ngày 12 tháng 11 năm 2015.</ref>
.pyi, .pyc, .pyd
Trang mạngpython.org
Cácbản triển khai lớn
CPython,PyPy,Stackless Python,MicroPython,CircuitPython,IronPython,Jython
Phương ngữ
Cython,RPython, Starlark[10]
Ảnh hưởng từ
ABC,[11]Ada,[12]ALGOL 68,[13]
APL,[14]C,[15]C++,[16]CLU,[17]Dylan,[18]
Haskell,[14][19] Icon,[20]Lisp,[21]
Modula-3
,[13][16]Perl,[22]Standard ML[14]
Ảnh hưởng tới
Apache Groovy,Boo,Cobra,CoffeeScript,[23]D,F#,GDScript,Genie,[24]Go,JavaScript,[25][26] ngôn ngữ lập trình Julia,[27]Mojo,[28]Nim,Ring,[29]Ruby,[30]Swift[31]

Python (/ˈ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 độngthu gom rác. Ngôn ngữ này hỗ trợ nhiều mô hình lập trình, bao gồmlậ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ượnglậ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 đồnghọc máy.[35][36][37][38]

Lịch sử

[sửa |sửa mã nguồn]
Bài chi tiết:Lịch sử Python

Python đã đượcGuido van Rossum tạo ra vào những năm1980[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ăngxử lí ngoại lệ và giao tiếp với hệ điều hànhAmoeba.[41] Nó bắt đầu được triển khai vào tháng 12 năm1989.[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ăm2018, 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ăm2019, 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ộtbộ 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ăm2008. Đây là một phiên bản lớn của Python khôngtươ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ệcdị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 đếnthực thị mã từ xa[52]"đầ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ộctấ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]

Triết lý thiết kế và tính năng

[sửa |sửa mã nguồn]

Python là mộtngôn ngữ lập trình đa mẫu hình,lập trình hướng đối tượnglậ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ồmsiêu lập trình[60]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ồmthiết kế theo hợp đồng[62][63]lập trình logic.[64]

Python sử dụngkiể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ăngphâ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àmfilter,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ứcbộ sinh (generator).[66] 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ừHaskellStandard ML.[67]

Triết lý căn bản của ngôn ngữ Python được trình bày trong tài liệuTheZen of Python (PEP 20), có dạngthơ 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ấ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ướcABC, 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àothư 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ệctố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ủabản triển khai tham khảoCPython.[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ụngPyPy, mộttrì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 AnhMonty 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ộttiểu phẩm trong Monty Python) thay chofoobar tiêu chuẩn.[72][73]

Mộttừ ngữ mớitiếng Anh-{neologism}- 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ácthành ngữtiếng Anh-{Programming idiom}- 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ácPythonista.[76][77]

Cú pháp

[sửa |sửa mã nguồn]
Bài chi tiết:Cú pháp Python

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ácdấ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ơnCPascal.[78]

Thụt lề

[sửa |sửa mã nguồn]

Python sử dụng thụt lề bằngkhoảng trắng hoặc ký tự tab thay vì dùng ngoặc nhọn hay các từ khoá để giới hạnkhố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]

Câu lệnh và luồng đ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ụngmột dấu bằng=.
  • Câu lệnhif: thực thi một khối lệnh nếu thoả mãn điều kiện, sử dụng cùng vớielseelif (viết tắt của else-if).
  • Câu lệnhfor: 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ệnhwhile: thực thi một khối lệnh chừng nào điều kiện còn đúng.
  • Câu lệnhtry: 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ốifinally sẽ được chạy dù có lỗi hay không.
  • Câu lệnhraise: đượ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ệnhclass: 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ộtlớp, để dùng trong lập trình hướng đối tượng.
  • Câu lệnhdef: định nghĩa mộthàm hoặcphương thức.
  • Câu lệnhwith: 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ộttệ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.[80]
  • Câu lệnhbreak: thoát ra khỏi vòng lặp.
  • Câu lệnhcontinue: bỏ qua lần lặp này và tiếp tục với mục kế tiếp.
  • Câu lệnhdel: 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ệnhpass: đóng vai trò như là một dạngNOP. Câu lệnh này được dùng để tạo các khối lệnh rỗng.
  • Câu lệnhassert: được dùng trong khi gỡ lỗi để kiểm tra điều kiện nên đúng.
  • Câu lệnhyield: trả lại giá trị từ một hàm bộ sinh; bản thânyield 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ệnhreturn: trả lại một giá trị từ một hàm hay phương thức.
  • Câu lệnhimport: được dùng để nhập các mô đun chứa 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ộttham 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 đếnmộ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.

Biểu thức

[sửa |sửa mã nguồn]

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:

  • Phép cộng, trừ và nhân thì đều giống nhau, nhưng hành vi của phép chia thì khác nhau. Có hai loại phép chia trong Python: phép chia phần nguyên (phép chia số nguyên) dùng dấu// và phép chia dấu phẩy động dùng dấu/.[81] Python cũng sử dụng toán tử** cho phép luỹ thừa.
  • Từ Python 3.5, toán tử trung tố@ mới đã được giới thiệu. Nó được thiết kể để được sử dụng trong các thư viện nhưNumPy đểnhân ma trận.[82][83]
  • Từ Python 3.8, cú pháp:=, hay "toán tử moóc" đã được giới thiệu. Nó gán giá trị vào biến trong một phần của một biểu thức lớn hơn.[84]
  • Trong Python,== so sánh theo giá trị, khác với Java, vốn so sánh các số theo giá trị[85] và các đối tượng theo tham chiếu.[86] (So sánh giá trị trong Java có thể được thực hiện bằng phương thứcequals().) Toán tửis của Python có thể được dùng để so sánh danh tính của đối tượng (so sánh theo tham chiếu). Trong Python, các phép so sánh có thể được xâu chuỗi lại với nhau, ví dụ nhưa<=b<=c.
  • Python sử dụng các từ khoáand,or,not để so sánh luận lý (boolean) thay vì dùng các loại biểu tượng&&,||,! được dùng trong Java và C.
  • Python có một loại biểu thức được gọi làthông hiểu danh sách (list comprehension) cũng như một loại biểu thức chung được gọi làbiểu thứcbộ sinh (generator expression).[66]
  • Các hàm vô danh được triển khai thông qua các biểu thức lambda; tuy nhiên, phần thân của hàm vô danh chỉ có thể là đúng một biểu thức.
  • Biểu thức điều kiện trong Python được viết dưới dạngxifcelsey[87] (có sự khác biệt về trật tự của các toán hạng so với toán tửc ? x : y thường có trong những ngôn ngữ khác).
  • Có sự phân biệt giữadanh sáchbộ trong Python. Danh sách được viết dưới dạng[1,2,3], biển đổi được, và không thể được dùng như khoá cho từ điển (các khoá từ điển phải làbất biến trong Python). Bộ được viết dưới dạng(1,2,3), không biến đổi được nên có thể được dùng làm khoá của từ điển, với điều kiện là tất cả các phần tử trong bộ cũng phải là bất biến. Toán tử+ có thể được sử dụng để nối liền hai bộ lại với nhau, nhưng không trực tiếp thay đổi nội dung của chúng, mà sẽ tạo ra một bộ mới chứa các phần tử của cả hai bộ ban đầu. Vì vậy, cho một biếnt ban đầu bằng(1,2,3), chạy lệnht=t+(4,5) sẽ thực thìt+(4,5) đầu tiên, tạo ra(1,2,3,4,5), rồi mới được gán lại chot, bằng cách đó đã "chỉnh sửa nội dung" củat một cách hiệu quả, trong khi vẫn tuân theo bản chất bất biến của đối tượng bộ. Trong các ngữ cảnh không mơ hồ thì dấu ngoặc đơn là không cần thiết.[88]
  • Python có một tính năng làtháo tách chuỗi (sequence unpacking) trong đó các biểu thức, mà mỗi biểu thức được đánh giá thành bất kì thứ gì có thể được gán vào (một biến, một thuộc tính viết được...), được liên kết theo cùng một cách với các bộ ban đầu đó và được đặt vào vế bên trái dấu bằng trong một câu lệnh gán. Câu lệnh này mong đợi một một đối tượnglặp được (iterable) ở vế bên phải dấu bằng tạo ra cùng một số lượng giá trị giống như ở các biểu thức trước đó khi đã và sẽ lặp qua, rồi gán mỗi giá trị được tạo ra bằng các biểu thức tương ứng ở vế bến trái.[89]
  • Python có một toán tử "định dạng xâu" là%. Chức năng này tương tự như định dạng xâuprintf trong C, thí dụ như"spam=%s eggs=%d"%("blah",2) được đánh giá thành"spam=blah eggs=2". Trong Python 3 và 2.6+, chức năng này được bổ sung bằng phương thứcformat() của lớpstr, ví dụ như"spam={0} eggs={1}".format("blah",2). Python 3.6 đã bổ sung thêm "f-string":blah="blah";eggs=2;f'spam={blah} eggs={eggs}'.[90]
  • Các xâu trong Python có thể đượcghép móc với nhau bằng cách "cộng" chúng lại (dùng cùng toán tử với phép cộng số nguyên và số phẩy động). Thí dụ,"spam"+"eggs" cho ra"spameggs". Kể cả nếu xấu chứa số, chúng vẫn sẽ được ghép móc thành xâu thay vì số nguyên. Thí dụ,"2"+"2" cho ra"22".
  • Python có nhiều kiểuhằng xâu khác nhau:
    • Xâu được phân cách bởi dấu nháy đơn hoặc nháy kép. Khác vớihệ vỏ Unix,Perl và các ngôn ngữ ảnh hưởng từ Perl, dấu nháy đơn và dấu nháy kép có cùng chức năng. Cả hai loại xâu đều dùng dấu chéo ngược (\) làmký tự thoát (escape character).Nội suy xâu đã được thêm vào kể từ Python 3.6 với tên gọi "hằng xâu được định dạng".[90]
    • Xâu ba dấu nháy: bắt đầu và kết thúc bằng ba dấu nháy đơn hoặc kép. Chúng có thể trải dài trên nhiều dòng giống như trongtài liệu đây (here document) trong các hệ vỏ, Perl vàRuby.
    • Các loại xâu thô, được kí hiệu bằng cách đặt trước hằng xâu một kí tựr. Các chuỗi thoát sẽ không bị thông dịch; cho nên xâu thô khá là hữu ích khi xâu có chứa nhiều dấu chéo ngược, chẳng hạn nhưbiểu thức chính quy và đường dẫn tệp trênWindows.
  • Python có các biểu thứcchỉ số mảngcắt lát mảng đối với danh sách, được kí hiệu làa[khoá],a[đầu:cuối] haya[đầu:cuối:bước]. Các chỉ số đượcđánh từ số không, và chỉ số âm sẽ chỉ lùi từ cuối lên. Việc cắt lát sẽ lấy các phần tử từđầu cho đến chỉ sốcuối (không kể chỉ sốcuối). Tham số cắt lát thứ ba, được gọi làbước, cho phép các phần tử có thể được bỏ qua hoặc đảo chiều. Chỉ số lát có thể được bỏ trống, ví dụa[:]trả lại một bản sao của danh sách đó. Mỗi phần tử trong một lát là mộtbản sao nô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, hayRuby. Đ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ụ:

  • Thông hiểu danh sách và vòng lặpfor
  • Biểu thức điều kiện và khối lệnhif
  • Hàmeval() (đá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 saitoán tử bằng== bằngtoá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ònifc=1:... sẽ báo lỗi cú pháp trong Python.

Phương thức

[sửa |sửa mã nguồn]

Phương thức của đối tượng là mộthàm đi kèm với lớp của đối tượng đó. Cú pháphiện_thể.phương_thức(đốisố), đối với các hàm và phương thức bình thường, thức chất là dạngcú pháp đặc biệt củaLớp.phương_thức(hiện_thể,đốisố). Các phương thức trong Python có một tham sốself được dùng để truy cậpdữ 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, hayRuby). Ngoại trừ điều này, Python cũng cung cấp cácphươ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ấychiều dài, so sánh,tính toán số học, chuyển đổi kiểu...[91]

Kiểu dữ liệu

[sửa |sửa mã nguồn]
Cấp bậc kiểu tiêu chuẩn trong Python 3

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 tronglú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ụnglớp, thường được dùng tronglập trình hướng đối tượng. Cáchiệ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() hayEggsClass()), các lớp lại là hiện thể củasiêu lớptype (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.[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ớpobject 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ủatype). 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]

Tóm tắt các kiểu dữ liệu có sẵn trong Python 3
KiểuThay đổi đượcMô tảVí dụ cú pháp
boolkhôngKiểu dữ liệu luận lýTrueFalse
bytearrayChuỗi cácbyte nối tiếpbytearray(b'Some ASCII')bytearray(b"Some ASCII")bytearray([119,105,107,105])
byteskhôngChuỗi các byte nối tiếpb'Some ASCII'b"Some ASCII"bytes([119,105,107,105])
complexkhôngSố phức với phần thực và phần ảo3+2.7j3+2.7j
dictMảng liên kết (hay từ điển) các cặp khoá và giá trị; có thể chứa lẫn lộn nhiều kiểu (khoá và giá trị), khoá phải là loại băm được{'key1':1.0,3:False}{}
ellipsisakhôngMột kiểu giữ chỗchấm lửng được dùng như một chỉ số trong một mảngNumPy...Ellipsis
floatkhôngSố phẩy động độ chính xác đôi. Độ chính xác phụ thuộc vào từng máy nhưng trên thực tế thì nó thường được triển khai là một sốIEEE 754 64-bit với độ chính xác là 53 bit.[95]1.33333
frozensetkhôngTập hợp không được sắp xếp, không chứa các giá trị giống nhau; có thể chửa lẫn lộn nhiều kiểu, nếu băm đượcfrozenset([4.0,'string',True])
intkhôngSố nguyên với độ lớn không giới hạn[96]42
listDanh sách, có thể chứa lẫn lộn nhiều kiểu[4.0,'string',True][]
NoneTypeakhôngMột đối tượng đại diện cho sự không có mặt của dữ liệu, tương đương vớinull trong các ngôn ngữ khácNone
NotImplementedTypeakhôngMột kiểu giữ chỗ có thể được trả lại từtoán tử nạp chồng để biểu thị kiểu toán hạng không được hỗ trợ.NotImplemented
rangekhôngMột chuỗi các số thường được dùng để lặp với số lần biết trước trong vòng lặpfor[97]range(-1,10)range(10,-5,-2)
setTập hợp không được sắp xếp, không chứa các giá trị giống nhau; có thể chửa lẫn lộn nhiều kiểu, nếu băm được{4.0,'string',True}set()
strkhôngMộtxâu ký tự (string): chuỗi các điểm mã Unicode'Wikipedia'"Wikipedia"
"""Trải dài trênnhiềudòng"""
tuplekhôngBộ; có thể chứa lẫn lộn nhiều kiểu(4.0,'xâu kí tự',True)('phần tử',)()

^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ử** chophé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@.[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ùngthứ tự tính toán, toán tửtrung tố (+- cũng có thể làmtoá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]

  • 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ên7//3 == 2,-7//3 == -3,7.5//3 == 2.0-7.5//3 == -3.0. Thêmfrom__future__importdivision 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 đúng (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.[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ìnhb*(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ủaa%b là, đúng như mong đợi, nằm trongnửa khoảng mở [0,b), vớib là một số nguyên dương, nó cũng cần phải nằm trong khoảng (b, 0] khib âm.[100]

Python cung cấp một hàmround để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.[101] 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.[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ứca < b < c kiểm tra xema có nhỏ hơnbb có nhỏ hơnc 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ớic.[104]

Python sử dụngsố 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ớpDecimal trong mô đundecimal cung cấpsố 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ớpFraction trong mô đunfractions cung cấp độ chính xác tuỳ ý chosố 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ứ baNumPy 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]

Chú thích

[sửa |sửa mã nguồn]
# dòng chú thích

In giá trị

[sửa |sửa mã nguồn]
# Từ Python 3print((7+8)/2.0)print((2+3j)*(4-6j))

Nội suy xâu (string interpolation)

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

Cấu trúc rẽ nhánh

[sửa |sửa mã nguồn]
  • Dạng 1:
    ifbiểu_thức_điều_kiện:# lệnh...
  • Dạng 2:
    ifbiểu_thức_điều_kiện:# lệnh...else:# lệnh...
  • Dạng 3:
    ifbiểu_thức_điều_kiện_1:# lệnh... (được thực hiện nếu biểu_thức_điều_kiện_1 là đúng/true)elifbiểu_thức_điều_kiện_2:# lệnh... (được thực hiện 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 thực hiện nếu tất cả các biểu thức điều kiện đi kèm if và elif đều sai)
  • Khớp theo mẫu, được thêm vào từ bản 3.10.0:
    matchbiến_1:caseđiều_kiện_1:#được thực hiện nếu biến_1 = điều_kiện_1caseđiều_kiện_2:#được thực hiện nếu biến_1 = điều_kiện_2

Cấu trúc lặp

[sửa |sửa mã nguồn]
whilebiểu_thức_đúng:# lệnh...
forphần_tửindãy:# lệnh...
L=["Hà Nội","Hải Phòng","TP Hồ Chí Minh"]forthành_phốinL:print(thành_phố)foriinrange(10):print(i)

Hàm

[sửa |sửa mã nguồn]
deftên_hàm(tham_biến_1,tham_biến_2,tham_biến_n):# lệnh...returngiá_trị_hàm

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

defluỹ_thừa(x,n=2):"""Lũy thừa với số mũ mặc định là 2"""returnx**nprint(luỹ_thừa(3))# 9print(luỹ_thừa(2,3))# 8

Lớp

[sửa |sửa mã nguồn]
classLớp:#...classLớpCon(Lớp):"""LớpCon kế thừa lớp Lớp"""x=3# biến thành viên của lớp#defphương_thức(self,tham_biến):#...# khởi tạoa=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ệnhexceptLoại_Lỗi:thôngbáolỗi

Thư viện

[sửa |sửa mã nguồn]

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 andHTTP được hỗ trợ. Nó cũng có chứa các mô đun đành cho việc tạo lậpgiao diện người dùng đồ hoạ, kết nối vớicơ 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ớibiểu thức chính quykiể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 khaiwsgiref 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ácbả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:

Môi trường phát triển

[sửa |sửa mã nguồn]
Xem thêm:So sánh các môi trường phát triển tích hợp § Python

Phần lớn trình hiện thực Python (kể cả CPython) có chứa mộttrình lặp đọc–tính–in (REPL), cho phép chúng hoạt động như là mộttrì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ộtmô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êntrì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àokhoa học tính toán.[113]

Các bản triển khai

[sửa |sửa mã nguồn]
Xem thêm:Danh sách phần mềm Python § Các bản thực hiện Python

Bản triển khai tham khảo

[sửa |sửa mã nguồn]

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ẩnC89 vời một vài tính năngC99 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ớiC11 hoặc C++[116]). Nó biên dịch các chương trình Python thành một dạngmã byte trung gian, sau đó thực thi mã byte trênmá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à Pythonbả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ênWindows 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ànhtương tự Unix hiện đại, bao gồm macOS (và máy MacApple 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/2Solaris 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ác bản triển khai khác

[sửa |sửa mã nguồn]
  • PyPy là một trình thông dịch nhanh, tuân thủ cú pháp của Python 2.7 và 3.6.[121]Trình biên dịch tức thời của nó mang đến tốc độ vượt trội so với CPython nhưng một vài thư viện được viết bằng C lại không thể được sử dụng cùng với nó.[122]
  • Stackless Python là một phân nhánh (fork) đáng chú ý của CPython có cài đặtvi luồng; nó không sử dụngngăn xếp lời gọi theo cùng một cách với CPython, vậy nên nó hỗ trợ các chương trình đồng thời một cách ồ ạt. PyPy cũng có một phiên bản không có ngăn xếp.[123]
  • MicroPythonCircuitPython là các biến thể Python 3 được tối ưu hoá chovi điều khiển, bao gồmLego Mindstorms EV3.[124]
  • Pyston là một biến thể của Python sử dụng biên dịch tức thời để tăng tốc độ thực thi các chương trình Python.[125]
  • Cinder là một phân nhánh hướng hiệu năng của CPython 3.8 có chứa một số tối ưu hoá bao gồm đệm bộ nhớ mã byte trong dòng, đánh giá các chương trình con một cách tham vọng, mộttrình biên dịch tức thời "mỗi lúc một phương thức" và một trình biên dịch mã byte thử nghiệm.[126]

Trình biên dịch chéo sang ngôn ngữ khác

[sửa |sửa mã nguồn]

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:

  • Brython,[127] Transcrypt[128][129]Pyjs (phát hành lần cuối năm 2012) biên dịch Python sangJavaScript.
  • Codon biên dịch một tập con Python định kiểu tĩnh[130] sang mã máy (thông quaLLVM) và hỗ trợ đa luồng cho hệ thống bản địa.[131]
  • Cython biên dịch (một tập cha của) Python 2.7 sang C. Phần mã kết quả cũng dùng được với Python thông qua các lệnh gọi API mức C trực tiếp vào trình thông dịch Python.
  • Nuitka biên dịch Python sang C.[132]
  • Numba sử dụng LLVM để biên dịch một tập con của Python sang mã máy.
  • Pythran biên dịch một tập con của Python 3 sang C++.[133][134][135]
  • 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 toGo.[136][137][138]
  • IronPython cho phép chạy các chương trình Python 2.7 trên .NETCommon Language Runtime.[139]
  • 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.[140]
  • 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.

Phát triển

[sửa |sửa mã nguồn]

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 tronghệ theo dõi lỗiRoundup được tổ chức trênbugs.python.org.[142] Sự phát triển ban đầu chỉ xảy ra trên một kho mã nguồntự làm chủ chạyMercurial cho đến khi Python di chuyển mã nguồn sangGithub 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:

  • 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. Theo ông Guido van Rossum, phiên bản 4.0 có lẽ sẽ không bao giờ được phát hành.[144]
  • 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.[145][146] 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.[147]
  • 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ềuphiê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ậpkiể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ùngwstr (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ăngkhớp theo mẫu (pattern matching) vào ngôn ngữ.[151]

Sự phổ biến

[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 ngữ lập trình phổ biến nhất trongChỉ 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ướcJavaC).[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 andITA. Trang mạng tin tức xã hộiReddit cũng được viết phần lớn bằng Python.[158]

Sử dụng

[sửa |sửa mã nguồn]
Bài chi tiết:Danh sách phần mềm Python
Được vận hành bởi Python

Python có thể đóng vài trò như là mộtngôn ngữ kịch bản choứng dụng web, chẳng hạn như thông quamod wsgi đối vớimáy chủ web Apache.[159] VớiGiao diện Cổng vào Máy chủ Web, mộtAPI 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ácbộ khung web nhưDjango,Pylons,Pyramid,TurboGears,web2py,Tornado,Flask,BottleZope 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ởiDropbox chẳng hạn.

Các thư viện nhưNumPy,SciPyMatplotlib 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ưBiopythonAstropy cung cấp các chức năng miền cụ thể.SageMath là mộthệ thống đại số máy tính với mộtgiao 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ủatoán học, bao gồmđại số,toán tổ hợp,giải tích số,lý thuyết số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ínhxử lý ảnh.[163]

Python thường được sử dụng trong các dự ántrí 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,PytorchScikit-learn.[164][165][166][167] Vì là một ngôn ngữ kịch bản vớikiế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 trongxử lý ngôn ngữ tự nhiên.

Python có thể được sử dụng để phát triển cácgiao 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 quanNuke, trong các chương trình sửa ảnh 2D nhưGIMP,[170]Inkscape,ScribusPaint Shop Pro, và trong các chương trìnhkí hiệu âm nhạc nhưtrình soạn nhạcCapella.GNU Debugger sử dụng Python như là một trìnhin đẹ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 trongArcGIS. 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 trongGoogle App Engine, với hai ngôn ngữ còn lại làJavaGo.

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ácbả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ứcterminal – đầ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 đặtUbiquity, trong khiRed Hat LinuxFedora sử dụng trình cài đặtAnaconda.Gentoo Linux sử dụng Python tronghệ 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ệpan 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.

Ảnh hưởng ngôn ngữ

[sửa |sửa mã nguồn]

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:

  • CoffeeScript – một ngôn ngữ lập trình biên dịch chéo sang JavaScript – có cú pháp lấy cảm hứng từ Python.
  • ECMAScript/JavaScript mượn biến lặp (iterator) và bộ sinh từ Python.
  • GDScript, một ngôn ngữ kịch bản rất giống Python, được tích hợp vào bộ máy trò chơiGodot.[173]
  • Go được thiết kế nhằm "tăng tốc độ làm việc trong một ngôn ngữ kiểu động giống như Python" và cả hai có cùng cú pháp cắt lát mảng.
  • Groovy được tạo ra với mong muốn đem triết lí thiết kế của Python vàoJava.[174]
  • Julia được thiết kế để "có thể sử dụng được vào các mục đích chung giống như Python vậy".[175]
  • Mojo, một tập cha của Python, cố gắng tương thích với cú pháp và hệ sinh thái của Python[176], và có thể chạy nhanh hơn Python lên đến 35.000 lần.[177]
  • Nim cũng có thụt lề và cú pháp tương đồng.[178]
  • Matsumoto Yukihiro, tác giả của ngôn ngữRuby từng cho biết: "Tôi muốn một ngôn ngữ kịch bản mạnh mẽ hơn Perl và hướng đối tượng nhiều hơn Python. Đó là lí do tôi quyết định thiết kế ngôn ngữ cho riêng mình."[179]

Xem thêm

[sửa |sửa mã nguồn]

Tham khảo

[sửa |sửa mã nguồn]
  1. ^"General Python FAQ – Python 3 documentation".docs.python.org. Truy cập ngày 7 tháng 7 năm 2024.
  2. ^"Python 0.9.1 part 01/21". alt.sources archives.Lưu trữ bản gốc ngày 11 tháng 8 năm 2021. Truy cập ngày 11 tháng 8 năm 2021.
  3. ^"Why is Python a dynamic language and also a strongly typed language".Python Wiki.Lưu trữ bản gốc ngày 14 tháng 3 năm 2021. Truy cập ngày 27 tháng 1 năm 2021.
  4. ^"PEP 483 – The Theory of Type Hints".Python.org.Lưu trữ bản gốc ngày 14 tháng 6 năm 2020. Truy cập ngày 14 tháng 6 năm 2018.
  5. ^"PEP 11 – CPython platform support | peps.python.org".Python Enhancement Proposals (PEPs) (bằng tiếng Anh). Truy cập ngày 22 tháng 4 năm 2024.
  6. ^"PEP 738 – Adding Android as a supported platform | peps.python.org".Python Enhancement Proposals (PEPs) (bằng tiếng Anh). Truy cập ngày 19 tháng 5 năm 2024.
  7. ^"Download Python for Other Platforms".Python.org (bằng tiếng Anh).Lưu trữ bản gốc ngày 27 tháng 11 năm 2020. Truy cập ngày 18 tháng 8 năm 2023.
  8. ^"test – Regression tests package for Python – Python 3.7.13 documentation".docs.python.org.Lưu trữ bản gốc ngày 17 tháng 5 năm 2022. Truy cập ngày 17 tháng 5 năm 2022.
  9. ^"platform – Access to underlying platform's identifying data – Python 3.10.4 documentation".docs.python.org.Lưu trữ bản gốc ngày 17 tháng 5 năm 2022. Truy cập ngày 17 tháng 5 năm 2022.
  10. ^"Starlark Language".Lưu trữ bản gốc ngày 15 tháng 6 năm 2020. Truy cập ngày 25 tháng 5 năm 2019.
  11. ^Lỗi chú thích: Thẻ<ref> sai; không có nội dung trong thẻ ref có tênfaq-created
  12. ^"Ada 83 Reference Manual (raise statement)".Lưu trữ bản gốc ngày 22 tháng 10 năm 2019. Truy cập ngày 7 tháng 1 năm 2020.
  13. ^abLỗi chú thích: Thẻ<ref> sai; không có nội dung trong thẻ ref có tên98-interview
  14. ^abcde"itertools – Functions creating iterators for efficient looping – Python 3.7.1 documentation".docs.python.org.Lưu trữ bản gốc ngày 14 tháng 6 năm 2020. Truy cập ngày 22 tháng 11 năm 2016.This module implements a number of iterator building blocks inspired by constructs from APL, Haskell, and SML.Lỗi chú thích: Thẻ<ref> không hợp lệ: tên “python.org” được định rõ nhiều lần, mỗi lần có nội dung khác
  15. ^Lỗi chú thích: Thẻ<ref> sai; không có nội dung trong thẻ ref có tênAutoNT-1
  16. ^abLỗi chú thích: Thẻ<ref> sai; không có nội dung trong thẻ ref có tênclassmix
  17. ^Lỗi chú thích: Thẻ<ref> sai; không có nội dung trong thẻ ref có têneffbot-call-by-object
  18. ^Lỗi chú thích: Thẻ<ref> sai; không có nội dung trong thẻ ref có tênAutoNT-2
  19. ^Lỗi chú thích: Thẻ<ref> sai; không có nội dung trong thẻ ref có tênAutoNT-3
  20. ^Lỗi chú thích: Thẻ<ref> sai; không có nội dung trong thẻ ref có tênAutoNT-4
  21. ^Lỗi chú thích: Thẻ<ref> sai; không có nội dung trong thẻ ref có tênAutoNT-6
  22. ^"re – Regular expression operations – Python 3.10.6 documentation".docs.python.org.Lưu trữ bản gốc ngày 18 tháng 7 năm 2018. Truy cập ngày 6 tháng 9 năm 2022.This module provides regular expression matching operations similar to those found in Perl.
  23. ^"CoffeeScript".coffeescript.org.Lưu trữ bản gốc ngày 12 tháng 6 năm 2020. Truy cập ngày 3 tháng 7 năm 2018.
  24. ^"The Genie Programming Language Tutorial".Lưu trữ bản gốc ngày 1 tháng 6 năm 2020. Truy cập ngày 28 tháng 2 năm 2020.
  25. ^"Perl and Python influences in JavaScript".www.2ality.com. ngày 24 tháng 2 năm 2013.Lưu trữ bản gốc ngày 26 tháng 12 năm 2018. Truy cập 15 tháng 5 năm 2015.
  26. ^Rauschmayer, Axel."Chapter 3: The Nature of JavaScript; Influences".O'Reilly, Speaking JavaScript.Lưu trữ bản gốc ngày 26 tháng 12 năm 2018. Truy cập ngày 15 tháng 5 năm 2015.
  27. ^Lỗi chú thích: Thẻ<ref> sai; không có nội dung trong thẻ ref có tênJulia
  28. ^Krill, Paul (ngày 4 tháng 5 năm 2023)."Mojo language marries Python and MLIR for AI development".InfoWorld (bằng tiếng Anh).Lưu trữ bản gốc ngày 5 tháng 5 năm 2023. Truy cập ngày 5 tháng 5 năm 2023.
  29. ^Ring Team (ngày 4 tháng 12 năm 2017)."Ring and other languages".ring-lang.net.ring-lang.Lưu trữ bản gốc ngày 25 tháng 12 năm 2018. Truy cập ngày 4 tháng 12 năm 2017.
  30. ^Lỗi chú thích: Thẻ<ref> sai; không có nội dung trong thẻ ref có tênbini
  31. ^Lattner, Chris (ngày 3 tháng 6 năm 2014)."Chris Lattner's Homepage". Chris Lattner.Lưu trữ bản gốc ngày 25 tháng 12 năm 2018. Truy cập ngày 3 tháng 6 năm 2014.The Swift language is the product of tireless effort from a team of language experts, documentation gurus, compiler optimization ninjas, and an incredibly important internal dogfooding group who provided feedback to help refine and battle-test ideas. Of course, it also greatly benefited from the experiences hard-won by many other languages in the field, drawing ideas from Objective-C, Rust, Haskell, Ruby, Python, C#, CLU, and far too many others to list.
  32. ^Kuhlman, Dave."A Python Book: Beginning Python, Advanced Python, and Python Exercises". Section 1.1.Bản gốc(PDF) lưu trữ ngày 23 tháng 6 năm 2012.
  33. ^Rossum, Guido Van (ngày 20 tháng 1 năm 2009)."The History of Python: A Brief Timeline of Python".The History of Python.Lưu trữ bản gốc ngày 5 tháng 6 năm 2020. Truy cập ngày 5 tháng 3 năm 2021.
  34. ^Peterson, Benjamin (ngày 20 tháng 4 năm 2020)."Python 2.7.18, the last release of Python 2".Python Insider.Lưu trữ bản gốc ngày 26 tháng 4 năm 2020. Truy cập ngày 27 tháng 4 năm 2020.
  35. ^"Stack Overflow Developer Survey 2022".Stack Overflow (bằng tiếng Anh).Lưu trữ bản gốc ngày 27 tháng 6 năm 2022. Truy cập ngày 12 tháng 8 năm 2022.
  36. ^"The State of Developer Ecosystem in 2020 Infographic".JetBrains: Developer Tools for Professionals and Teams (bằng tiếng Anh).Lưu trữ bản gốc ngày 1 tháng 3 năm 2021. Truy cập ngày 5 tháng 3 năm 2021.
  37. ^"TIOBE Index". TIOBE.Lưu trữ bản gốc ngày 25 tháng 2 năm 2018. Truy cập ngày 3 tháng 1 năm 2023.The TIOBE Programming Community index is an indicator of the popularity of programming languages Updated as required.
  38. ^"PYPL PopularitY of Programming Language index".pypl.github.io (bằng tiếng Anh).Lưu trữ bản gốc ngày 14 tháng 3 năm 2017. Truy cập ngày 26 tháng 3 năm 2021.
  39. ^abVenners, Bill (ngày 13 tháng 1 năm 2003)."The Making of Python".Artima Developer. Artima.Lưu trữ bản gốc ngày 1 tháng 9 năm 2016. Truy cập ngày 22 tháng 3 năm 2007.
  40. ^van Rossum, Guido (ngày 29 tháng 8 năm 2000)."SETL (was: Lukewarm about range literals)".Python-Dev (Danh sách thư).Lưu trữ bản gốc ngày 14 tháng 7 năm 2018. Truy cập ngày 13 tháng 3 năm 2011.
  41. ^"Why was Python created in the first place?".General Python FAQ. Python Software Foundation.Lưu trữ bản gốc ngày 24 tháng 10 năm 2012. Truy cập ngày 22 tháng 3 năm 2007.
  42. ^van Rossum, Guido (ngày 20 tháng 1 năm 2009)."A Brief Timeline of Python".The History of Python.Lưu trữ bản gốc ngày 5 tháng 6 năm 2020. Truy cập ngày 20 tháng 1 năm 2009.
  43. ^Fairchild, Carlie (ngày 12 tháng 7 năm 2018)."Guido van Rossum Stepping Down from Role as Python's Benevolent Dictator For Life".Linux Journal.Lưu trữ bản gốc ngày 13 tháng 7 năm 2018. Truy cập ngày 13 tháng 7 năm 2018.
  44. ^"PEP 8100". Python Software Foundation.Lưu trữ bản gốc ngày 4 tháng 6 năm 2020. Truy cập ngày 4 tháng 5 năm 2019.
  45. ^"PEP 13 -- Python Language Governance".Python.org (bằng tiếng Anh).Lưu trữ bản gốc ngày 27 tháng 5 năm 2021. Truy cập ngày 25 tháng 8 năm 2021.
  46. ^Kuchling, A. M.; Zadka, Moshe (ngày 16 tháng 10 năm 2000)."What's New in Python 2.0". Python Software Foundation.Lưu trữ bản gốc ngày 23 tháng 10 năm 2012. Truy cập ngày 11 tháng 2 năm 2012.
  47. ^"Python 3.0 Release". Python Software Foundation.Lưu trữ bản gốc ngày 14 tháng 6 năm 2020. Truy cập ngày 8 tháng 7 năm 2009.
  48. ^van Rossum, Guido (ngày 5 tháng 4 năm 2006)."PEP 3000 – Python 3000".Python Enhancement Proposals. Python Software Foundation.Bản gốc lưu trữ ngày 3 tháng 3 năm 2016. Truy cập ngày 27 tháng 6 năm 2009.
  49. ^"2to3 – Automated Python 2 to 3 code translation".docs.python.org.Lưu trữ bản gốc ngày 4 tháng 6 năm 2020. Truy cập ngày 2 tháng 2 năm 2021.
  50. ^Langa, Łukasz (ngày 19 tháng 2 năm 2021)."Python Insider: Python 3.9.2 and 3.8.8 are now available".Python Insider.Lưu trữ bản gốc ngày 25 tháng 2 năm 2021. Truy cập ngày 26 tháng 2 năm 2021.
  51. ^"Red Hat Customer Portal - Access to 24x7 support and knowledge".access.redhat.com.Lưu trữ bản gốc ngày 6 tháng 3 năm 2021. Truy cập ngày 26 tháng 2 năm 2021.
  52. ^"CVE - CVE-2021-3177".cve.mitre.org.Lưu trữ bản gốc ngày 27 tháng 2 năm 2021. Truy cập ngày 26 tháng 2 năm 2021.
  53. ^"CVE - CVE-2021-23336".cve.mitre.org.Lưu trữ bản gốc ngày 24 tháng 2 năm 2021. Truy cập ngày 26 tháng 2 năm 2021.
  54. ^Langa, Łukasz (ngày 24 tháng 3 năm 2022)."Python Insider: Python 3.10.4 and 3.9.12 are now available out of schedule".Python Insider.Lưu trữ bản gốc ngày 21 tháng 4 năm 2022. Truy cập ngày 19 tháng 4 năm 2022.
  55. ^Langa, Łukasz (ngày 16 tháng 3 năm 2022)."Python Insider: Python 3.10.3, 3.9.11, 3.8.13, and 3.7.13 are now available with security content".Python Insider.Lưu trữ bản gốc ngày 17 tháng 4 năm 2022. Truy cập ngày 19 tháng 4 năm 2022.
  56. ^Langa, Łukasz (ngày 17 tháng 5 năm 2022)."Python Insider: Python 3.9.13 is now available".Python Insider.Lưu trữ bản gốc ngày 17 tháng 5 năm 2022. Truy cập ngày 21 tháng 5 năm 2022.
  57. ^"Python Insider: Python releases 3.10.7, 3.9.14, 3.8.14, and 3.7.14 are now available".pythoninsider.blogspot.com. ngày 7 tháng 9 năm 2022.Lưu trữ bản gốc ngày 13 tháng 9 năm 2022. Truy cập ngày 16 tháng 9 năm 2022.
  58. ^"CVE - CVE-2020-10735".cve.mitre.org.Lưu trữ bản gốc ngày 20 tháng 9 năm 2022. Truy cập ngày 16 tháng 9 năm 2022.
  59. ^"What's New In Python 3.13".Python Documentation. Truy cập ngày 13 tháng 11 năm 2024.
  60. ^The Cain Gang Ltd."Python Metaclasses: Who? Why? When?"(PDF).Bản gốc(PDF) lưu trữ ngày 30 tháng 5 năm 2009. Truy cập ngày 27 tháng 6 năm 2009.
  61. ^"3.3. Special method names".The Python Language Reference. Python Software Foundation.Lưu trữ bản gốc ngày 15 tháng 12 năm 2018. Truy cập ngày 27 tháng 6 năm 2009.
  62. ^"PyDBC: method preconditions, method postconditions and class invariants for Python".Lưu trữ bản gốc ngày 23 tháng 11 năm 2019. Truy cập ngày 24 tháng 9 năm 2011.
  63. ^"Contracts for Python".Lưu trữ bản gốc ngày 15 tháng 6 năm 2020. Truy cập ngày 24 tháng 9 năm 2011.
  64. ^"PyDatalog".Lưu trữ bản gốc ngày 13 tháng 6 năm 2020. Truy cập ngày 22 tháng 7 năm 2012.
  65. ^"Extending and Embedding the Python Interpreter: Reference Counts" (bằng tiếng Anh). Docs.python.org.Lưu trữ bản gốc ngày 18 tháng 10 năm 2012. Truy cập ngày 5 tháng 6 năm 2020.Since Python makes heavy use ofmalloc() andfree(), it needs a strategy to avoid memory leaks as well as the use of freed memory. The chosen method is calledreference counting.
  66. ^abHettinger, Raymond (ngày 30 tháng 1 năm 2002)."PEP 289 – Generator Expressions".Python Enhancement Proposals. Python Software Foundation.Lưu trữ bản gốc ngày 14 tháng 6 năm 2020. Truy cập ngày 19 tháng 2 năm 2012.
  67. ^"6.5 itertools – Functions creating iterators for efficient looping". Docs.python.org.Lưu trữ bản gốc ngày 14 tháng 6 năm 2020. Truy cập ngày 22 tháng 11 năm 2016.
  68. ^"PEP 206 -- Python Advanced Library".Python.org.
  69. ^Peters, Tim (ngày 19 tháng 8 năm 2004)."PEP 20 – The Zen of Python".Python Enhancement Proposals. Python Software Foundation.Lưu trữ bản gốc ngày 26 tháng 12 năm 2018. Truy cập ngày 24 tháng 11 năm 2008.
  70. ^ab"Python Culture".ebeab. ngày 21 tháng 1 năm 2014.Bản gốc lưu trữ ngày 30 tháng 1 năm 2014.
  71. ^"General Python FAQ".Python v2.7.3 documentation. Docs.python.org.Lưu trữ bản gốc ngày 24 tháng 10 năm 2012. Truy cập ngày 4 tháng 6 năm 2020.
  72. ^"15 Ways Python Is a Powerful Force on the Web".Bản gốc lưu trữ ngày 11 tháng 5 năm 2019. Truy cập ngày 3 tháng 7 năm 2018.
  73. ^"8.18. pprint — Data pretty printer — Python 3.8.3 documentation".docs.python.org.Lưu trữ bản gốc ngày 22 tháng 1 năm 2021. Truy cập ngày 4 tháng 6 năm 2020.
  74. ^Clark, Robert (ngày 26 tháng 4 năm 2019)."How to be Pythonic and why you should care".Medium.Lưu trữ bản gốc ngày 13 tháng 8 năm 2021. Truy cập ngày 20 tháng 1 năm 2021.
  75. ^"Code Style — The Hitchhiker's Guide to Python".docs.python-guide.org.Lưu trữ bản gốc ngày 27 tháng 1 năm 2021. Truy cập ngày 20 tháng 1 năm 2021.
  76. ^Goodger, David."Code Like a Pythonista: Idiomatic Python".Bản gốc lưu trữ ngày 27 tháng 5 năm 2014. Truy cập ngày 24 tháng 3 năm 2009.
  77. ^"How to think like a Pythonista".Bản gốc lưu trữ ngày 23 tháng 3 năm 2018. Truy cập ngày 24 tháng 3 năm 2009.
  78. ^"Is Python a good language for beginning programmers?".General Python FAQ. Python Software Foundation.Lưu trữ bản gốc ngày 24 tháng 10 năm 2012. Truy cập ngày 21 tháng 3 năm 2007.
  79. ^Guttag, John V. (ngày 12 tháng 8 năm 2016).Introduction to Computation and Programming Using Python: With Application to Understanding Data. MIT Press.ISBN 978-0-262-52962-4.
  80. ^"Highlights: Python 2.5".Python.org.Lưu trữ bản gốc ngày 4 tháng 8 năm 2019. Truy cập ngày 20 tháng 3 năm 2018.
  81. ^"division".python.org.Lưu trữ bản gốc ngày 20 tháng 7 năm 2006. Truy cập ngày 30 tháng 7 năm 2014.
  82. ^"PEP 0465 -- A dedicated infix operator for matrix multiplication".python.org.Lưu trữ bản gốc ngày 4 tháng 6 năm 2020. Truy cập ngày 1 tháng 1 năm 2016.
  83. ^"Python 3.5.1 Release and Changelog".python.org.Lưu trữ bản gốc ngày 14 tháng 5 năm 2020. Truy cập ngày 1 tháng 1 năm 2016.
  84. ^"What's New in Python 3.8".Lưu trữ bản gốc ngày 8 tháng 6 năm 2020. Truy cập ngày 14 tháng 10 năm 2019.
  85. ^"Chapter 15. Expressions - 15.21.1. Numerical Equality Operators == and !=".Oracle Corporation.Lưu trữ bản gốc ngày 7 tháng 6 năm 2020. Truy cập ngày 28 tháng 8 năm 2016.
  86. ^"Chapter 15. Expressions - 15.21.3. Reference Equality Operators == and !=". Oracle Corporation.Lưu trữ bản gốc ngày 7 tháng 6 năm 2020. Truy cập ngày 28 tháng 8 năm 2016.
  87. ^van Rossum, Guido; Hettinger, Raymond (ngày 7 tháng 2 năm 2003)."PEP 308 – Conditional Expressions".Python Enhancement Proposals. Python Software Foundation.Lưu trữ bản gốc ngày 13 tháng 3 năm 2016. Truy cập ngày 13 tháng 7 năm 2011.
  88. ^"4. Built-in Types — Python 3.6.3rc1 documentation".python.org.Lưu trữ bản gốc ngày 14 tháng 6 năm 2020. Truy cập ngày 1 tháng 10 năm 2017.
  89. ^"5.3. Tuples and Sequences — Python 3.7.1rc2 documentation".python.org.Lưu trữ bản gốc ngày 10 tháng 6 năm 2020. Truy cập ngày 17 tháng 10 năm 2018.
  90. ^ab"PEP 498 -- Literal String Interpolation".python.org.Lưu trữ bản gốc ngày 15 tháng 6 năm 2020. Truy cập ngày 8 tháng 3 năm 2017.
  91. ^Sweigart, Al (2020).Beyond the Basic Stuff with Python: Best Practices for Writing Clean Code (bằng tiếng Anh). No Starch Press. tr. 322.ISBN 978-1-59327-966-0.Lưu trữ bản gốc ngày 13 tháng 8 năm 2021. Truy cập ngày 7 tháng 7 năm 2021.
  92. ^"The Python Language Reference, section 3.3. New-style and classic classes, for release 2.7.1".Bản gốc lưu trữ ngày 26 tháng 10 năm 2012. Truy cập ngày 12 tháng 1 năm 2011.
  93. ^"Type hinting for Python". LWN.net. ngày 24 tháng 12 năm 2014.Lưu trữ bản gốc ngày 20 tháng 6 năm 2019. Truy cập ngày 5 tháng 5 năm 2015.
  94. ^"mypy - Optional Static Typing for Python".Lưu trữ bản gốc ngày 6 tháng 6 năm 2020. Truy cập ngày 28 tháng 1 năm 2017.
  95. ^ab"15. Floating Point Arithmetic: Issues and Limitations — Python 3.8.3 documentation".docs.python.org.Lưu trữ bản gốc ngày 6 tháng 6 năm 2020. Truy cập ngày 6 tháng 6 năm 2020.Almost all machines today (November 2000) use IEEE-754 floating point arithmetic, and almost all platforms map Python floats to IEEE-754 "double precision".
  96. ^Zadka, Moshe; van Rossum, Guido (ngày 11 tháng 3 năm 2001)."PEP 237 – Unifying Long Integers and Integers".Python Enhancement Proposals. Python Software Foundation.Lưu trữ bản gốc ngày 28 tháng 5 năm 2020. Truy cập ngày 24 tháng 9 năm 2011.
  97. ^ab"Built-in Types".Lưu trữ bản gốc ngày 14 tháng 6 năm 2020. Truy cập ngày 3 tháng 10 năm 2019.
  98. ^"PEP 465 -- A dedicated infix operator for matrix multiplication".python.org.Lưu trữ bản gốc ngày 29 tháng 5 năm 2020. Truy cập ngày 3 tháng 7 năm 2018.
  99. ^abZadka, Moshe; van Rossum, Guido (ngày 11 tháng 3 năm 2001)."PEP 238 – Changing the Division Operator".Python Enhancement Proposals. Python Software Foundation.Lưu trữ bản gốc ngày 28 tháng 5 năm 2020. Truy cập ngày 23 tháng 10 năm 2013.
  100. ^"Why Python's Integer Division Floors".Lưu trữ bản gốc ngày 5 tháng 6 năm 2020. Truy cập ngày 25 tháng 8 năm 2010.
  101. ^"round",The Python standard library, release 3.2, §2: Built-in functions,lưu trữ bản gốc ngày 25 tháng 10 năm 2012, truy cập ngày 14 tháng 8 năm 2011
  102. ^"round",The Python standard library, release 2.7, §2: Built-in functions,lưu trữ bản gốc ngày 27 tháng 10 năm 2012, truy cập ngày 14 tháng 8 năm 2011
  103. ^Beazley, David M. (2009).Python Essential Reference (ấn bản thứ 4). tr. 66.
  104. ^Kernighan, Brian W.; Ritchie, Dennis M. (1988).The C Programming Language (ấn bản thứ 2). tr. 206.{{Chú thích sách}}:Đã bỏ qua tham số không rõ|tựa đề-link= (trợ giúp)
  105. ^Batista, Facundo."PEP 0327 -- Decimal Data Type".Python.org.Lưu trữ bản gốc ngày 4 tháng 6 năm 2020. Truy cập ngày 26 tháng 9 năm 2015.
  106. ^"What's New in Python 2.6 — Python v2.6.9 documentation".docs.python.org.Lưu trữ bản gốc ngày 23 tháng 12 năm 2019. Truy cập ngày 26 tháng 9 năm 2015.
  107. ^"10 Reasons Python Rocks for Research (And a Few Reasons it Doesn't) – Hoyt Koepke".www.stat.washington.edu.Bản gốc lưu trữ ngày 31 tháng 5 năm 2020. Truy cập ngày 3 tháng 2 năm 2019.
  108. ^Shell, Scott (ngày 17 tháng 6 năm 2014)."An introduction to Python for scientific computing"(PDF).Lưu trữ(PDF) bản gốc ngày 4 tháng 2 năm 2019. Truy cập ngày 3 tháng 2 năm 2019.
  109. ^Piotrowski, Przemyslaw (tháng 7 năm 2006)."Build a Rapid Web Development Environment for Python Server Pages and Oracle".Oracle Technology Network. Oracle.Lưu trữ bản gốc ngày 2 tháng 4 năm 2019. Truy cập ngày 12 tháng 3 năm 2012.
  110. ^Batista, Facundo (ngày 17 tháng 10 năm 2003)."PEP 327 – Decimal Data Type".Python Enhancement Proposals. Python Software Foundation.Lưu trữ bản gốc ngày 4 tháng 6 năm 2020. Truy cập ngày 24 tháng 11 năm 2008.
  111. ^Eby, Phillip J. (ngày 7 tháng 12 năm 2003)."PEP 333 – Python Web Server Gateway Interface v1.0".Python Enhancement Proposals. Python Software Foundation.Lưu trữ bản gốc ngày 14 tháng 6 năm 2020. Truy cập ngày 19 tháng 2 năm 2012.
  112. ^"Modulecounts".Modulecounts. ngày 28 tháng 9 năm 2021.Lưu trữ bản gốc ngày 24 tháng 9 năm 2021. Truy cập ngày 28 tháng 9 năm 2021.
  113. ^Enthought, Canopy."Canopy".www.enthought.com.Bản gốc lưu trữ ngày 15 tháng 7 năm 2017. Truy cập ngày 20 tháng 8 năm 2016.
  114. ^"Mailman 3 Why aren't we allowing the use of C11? - Python-Dev - python.org".mail.python.org (bằng tiếng Anh).Lưu trữ bản gốc ngày 14 tháng 4 năm 2021. Truy cập ngày 1 tháng 3 năm 2021.
  115. ^"Issue 35473: Intel compiler (icc) does not fully support C11 Features, including atomics - Python tracker".bugs.python.org.Lưu trữ bản gốc ngày 14 tháng 4 năm 2021. Truy cập ngày 1 tháng 3 năm 2021.
  116. ^"4. Building C and C++ Extensions — Python 3.9.2 documentation".docs.python.org.Lưu trữ bản gốc ngày 3 tháng 3 năm 2021. Truy cập ngày 1 tháng 3 năm 2021.
  117. ^"Changelog — Python 3.9.0 documentation".docs.python.org.Lưu trữ bản gốc ngày 7 tháng 2 năm 2021. Truy cập ngày 8 tháng 2 năm 2021.
  118. ^"Download Python".Python.org (bằng tiếng Anh).Lưu trữ bản gốc ngày 8 tháng 12 năm 2020. Truy cập ngày 13 tháng 12 năm 2020.
  119. ^"history [vmspython]".www.vmspython.org.Lưu trữ bản gốc ngày 2 tháng 12 năm 2020. Truy cập ngày 4 tháng 12 năm 2020.
  120. ^"Download Python for Other Platforms".Python.org (bằng tiếng Anh).Lưu trữ bản gốc ngày 27 tháng 11 năm 2020. Truy cập ngày 4 tháng 12 năm 2020.
  121. ^"PyPy compatibility". Pypy.org.Lưu trữ bản gốc ngày 6 tháng 6 năm 2020. Truy cập ngày 3 tháng 12 năm 2012.
  122. ^"speed comparison between CPython and Pypy". Speed.pypy.org.Lưu trữ bản gốc ngày 10 tháng 5 năm 2021. Truy cập ngày 3 tháng 12 năm 2012.
  123. ^"Application-level Stackless features — PyPy 2.0.2 documentation". Doc.pypy.org.Lưu trữ bản gốc ngày 4 tháng 6 năm 2020. Truy cập ngày 17 tháng 7 năm 2013.
  124. ^"Python-for-EV3".LEGO Education (bằng tiếng Anh).Lưu trữ bản gốc ngày 7 tháng 6 năm 2020. Truy cập ngày 17 tháng 4 năm 2019.
  125. ^Yegulalp, Serdar (ngày 29 tháng 10 năm 2020)."Pyston returns from the dead to speed Python".InfoWorld.Lưu trữ bản gốc ngày 27 tháng 1 năm 2021. Truy cập ngày 26 tháng 1 năm 2021.
  126. ^"cinder: Instagram's performance oriented fork of CPython" (bằng tiếng Anh).Lưu trữ bản gốc ngày 4 tháng 5 năm 2021. Truy cập ngày 4 tháng 5 năm 2021.
  127. ^"Brython".brython.info.Lưu trữ bản gốc ngày 3 tháng 8 năm 2018. Truy cập ngày 21 tháng 1 năm 2021.
  128. ^"Transcrypt – Python in the browser".transcrypt.org (bằng tiếng Anh).Lưu trữ bản gốc ngày 19 tháng 8 năm 2018. Truy cập ngày 22 tháng 12 năm 2020.
  129. ^"Transcrypt: Anatomy of a Python to JavaScript Compiler".InfoQ.Lưu trữ bản gốc ngày 5 tháng 12 năm 2020. Truy cập ngày 20 tháng 1 năm 2021.
  130. ^"Codon: Differences with Python".Lưu trữ bản gốc ngày 25 tháng 5 năm 2023. Truy cập ngày 28 tháng 8 năm 2023.
  131. ^Lawson, Loraine (ngày 14 tháng 3 năm 2023)."MIT-Created Compiler Speeds up Python Code".The New Stack (bằng tiếng Anh).Lưu trữ bản gốc ngày 6 tháng 4 năm 2023. Truy cập ngày 28 tháng 8 năm 2023.
  132. ^"Nuitka Home | Nuitka Home".nuitka.net (bằng tiếng Anh).Lưu trữ bản gốc ngày 30 tháng 5 năm 2020. Truy cập ngày 18 tháng 8 năm 2017.
  133. ^Borderies, Olivier (ngày 24 tháng 1 năm 2019)."Pythran: Python at C++ speed !".Medium.Lưu trữ bản gốc ngày 25 tháng 3 năm 2020. Truy cập ngày 25 tháng 3 năm 2020.
  134. ^"Pythran — Pythran 0.9.5 documentation".pythran.readthedocs.io.Lưu trữ bản gốc ngày 19 tháng 2 năm 2020. Truy cập ngày 25 tháng 3 năm 2020.
  135. ^"Archived copy"(PDF).Lưu trữ(PDF) bản gốc ngày 18 tháng 4 năm 2021. Truy cập ngày 20 tháng 1 năm 2021.{{Chú thích web}}: Quản lý CS1: bản lưu trữ là tiêu đề (liên kết)
  136. ^"google/grumpy". ngày 10 tháng 4 năm 2020.Lưu trữ bản gốc ngày 15 tháng 4 năm 2020. Truy cập ngày 25 tháng 3 năm 2020 – qua GitHub.
  137. ^"Projects".opensource.google.Lưu trữ bản gốc ngày 24 tháng 4 năm 2020. Truy cập ngày 25 tháng 3 năm 2020.
  138. ^Francisco, Thomas Claburn in San."Google's Grumpy code makes Python Go".www.theregister.com.Lưu trữ bản gốc ngày 7 tháng 3 năm 2021. Truy cập ngày 20 tháng 1 năm 2021.
  139. ^"IronPython.net /".ironpython.net.Lưu trữ bản gốc ngày 17 tháng 4 năm 2021. Truy cập ngày 22 tháng 4 năm 2021.
  140. ^"Jython FAQ".www.jython.org.Lưu trữ bản gốc ngày 22 tháng 4 năm 2021. Truy cập ngày 22 tháng 4 năm 2021.
  141. ^abWarsaw, Barry; Hylton, Jeremy; Goodger, David (ngày 13 tháng 6 năm 2000)."PEP 1 – PEP Purpose and Guidelines".Python Enhancement Proposals. Python Software Foundation.Lưu trữ bản gốc ngày 6 tháng 6 năm 2020. Truy cập ngày 19 tháng 4 năm 2011.
  142. ^Cannon, Brett."Guido, Some Guys, and a Mailing List: How Python is Developed".python.org. Python Software Foundation.Bản gốc lưu trữ ngày 1 tháng 6 năm 2009. Truy cập ngày 27 tháng 6 năm 2009.
  143. ^"Python Developer's Guide — Python Developer's Guide".devguide.python.org.Lưu trữ bản gốc ngày 9 tháng 11 năm 2020. Truy cập ngày 17 tháng 12 năm 2019.
  144. ^Hughes, Owen (ngày 24 tháng 5 năm 2021)."Programming languages: Why Python 4.0 might never arrive, according to its creator".TechRepublic (bằng tiếng Anh).Lưu trữ bản gốc ngày 14 tháng 7 năm 2022. Truy cập ngày 16 tháng 5 năm 2022.
  145. ^"PEP 602 -- Annual Release Cycle for Python".Python.org (bằng tiếng Anh).Lưu trữ bản gốc ngày 14 tháng 6 năm 2020. Truy cập ngày 6 tháng 11 năm 2019.
  146. ^"Changing the Python release cadence [LWN.net]".lwn.net.Lưu trữ bản gốc ngày 6 tháng 11 năm 2019. Truy cập ngày 6 tháng 11 năm 2019.
  147. ^Norwitz, Neal (ngày 8 tháng 4 năm 2002)."[Python-Dev] Release Schedules (was Stability & change)".Lưu trữ bản gốc ngày 15 tháng 12 năm 2018. Truy cập ngày 27 tháng 6 năm 2009.
  148. ^"Python Buildbot".Python Developer's Guide. Python Software Foundation.Lưu trữ bản gốc ngày 5 tháng 6 năm 2020. Truy cập ngày 24 tháng 9 năm 2011.
  149. ^"1. Extending Python with C or C++ — Python 3.9.1 documentation".docs.python.org.Lưu trữ bản gốc ngày 23 tháng 6 năm 2020. Truy cập ngày 14 tháng 2 năm 2021.
  150. ^"PEP 623 -- Remove wstr from Unicode".Python.org (bằng tiếng Anh).Lưu trữ bản gốc ngày 5 tháng 3 năm 2021. Truy cập ngày 14 tháng 2 năm 2021.
  151. ^"PEP 634 -- Structural Pattern Matching: Specification".Python.org (bằng tiếng Anh).Lưu trữ bản gốc ngày 6 tháng 5 năm 2021. Truy cập ngày 14 tháng 2 năm 2021.
  152. ^Prechelt, Lutz (ngày 14 tháng 3 năm 2000)."An empirical comparison of C, C++, Java, Perl, Python, Rexx, and Tcl"(PDF).Lưu trữ(PDF) bản gốc ngày 3 tháng 1 năm 2020. Truy cập ngày 30 tháng 8 năm 2013.
  153. ^"Quotes about Python". Python Software Foundation.Lưu trữ bản gốc ngày 3 tháng 6 năm 2020. Truy cập ngày 8 tháng 1 năm 2012.
  154. ^"Organizations Using Python". Python Software Foundation.Lưu trữ bản gốc ngày 21 tháng 8 năm 2018. Truy cập ngày 15 tháng 1 năm 2009.
  155. ^"Tornado: Facebook's Real-Time Web Framework for Python - Facebook for Developers".Facebook for Developers (bằng tiếng Anh).Lưu trữ bản gốc ngày 19 tháng 2 năm 2019. Truy cập ngày 19 tháng 6 năm 2018.
  156. ^"What Powers Instagram: Hundreds of Instances, Dozens of Technologies". Instagram Engineering. ngày 11 tháng 12 năm 2016.Lưu trữ bản gốc ngày 15 tháng 6 năm 2020. Truy cập ngày 27 tháng 5 năm 2019.
  157. ^"How we use Python at Spotify".Spotify Labs (bằng tiếng Anh). ngày 20 tháng 3 năm 2013.Lưu trữ bản gốc ngày 10 tháng 6 năm 2020. Truy cập ngày 25 tháng 7 năm 2018.
  158. ^GitHub - reddit-archive/reddit: historical code from reddit.com., The Reddit Archives,lưu trữ bản gốc ngày 1 tháng 6 năm 2020, truy cập ngày 20 tháng 3 năm 2019
  159. ^"Usage statistics and market share of Python for websites". 2012.Lưu trữ bản gốc ngày 13 tháng 8 năm 2021. Truy cập ngày 18 tháng 12 năm 2012.
  160. ^Oliphant, Travis (2007)."Python for Scientific Computing".Computing in Science and Engineering. Quyển 9 số 3. tr. 10–20.Bibcode:2007CSE.....9c..10O.CiteSeerX 10.1.1.474.6460.doi:10.1109/MCSE.2007.58.ISSN 1521-9615.S2CID 206457124.Lưu trữ bản gốc ngày 15 tháng 6 năm 2020. Truy cập ngày 10 tháng 4 năm 2015.
  161. ^Millman, K. Jarrod; Aivazis, Michael (2011)."Python for Scientists and Engineers".Computing in Science and Engineering. Quyển 13 số 2. tr. 9–12.Bibcode:2011CSE....13b...9M.doi:10.1109/MCSE.2011.36.Lưu trữ bản gốc ngày 19 tháng 2 năm 2019. Truy cập ngày 7 tháng 7 năm 2014.
  162. ^Science education with SageMath, Innovative Computing in Science Education,Bản gốc lưu trữ ngày 15 tháng 6 năm 2020, truy cập ngày 22 tháng 4 năm 2019
  163. ^"OpenCV: OpenCV-Python Tutorials".docs.opencv.org.Lưu trữ bản gốc ngày 23 tháng 9 năm 2020. Truy cập ngày 14 tháng 9 năm 2020.
  164. ^Dean, Jeff; Monga, Rajat; và đồng nghiệp (ngày 9 tháng 11 năm 2015)."TensorFlow: Large-scale machine learning on heterogeneous systems"(PDF).TensorFlow.org. Google Research.Lưu trữ(PDF) bản gốc ngày 20 tháng 11 năm 2015. Truy cập ngày 10 tháng 11 năm 2015.
  165. ^Piatetsky, Gregory."Python eats away at R: Top Software for Analytics, Data Science, Machine Learning in 2018: Trends and Analysis".KDnuggets. KDnuggets.Lưu trữ bản gốc ngày 15 tháng 11 năm 2019. Truy cập ngày 30 tháng 5 năm 2018.
  166. ^"Who is using scikit-learn? — scikit-learn 0.20.1 documentation".scikit-learn.org.Lưu trữ bản gốc ngày 6 tháng 5 năm 2020. Truy cập ngày 30 tháng 11 năm 2018.
  167. ^Jouppi, Norm."Google supercharges machine learning tasks with TPU custom chip".Google Cloud Platform Blog.Lưu trữ bản gốc ngày 18 tháng 5 năm 2016. Truy cập ngày 19 tháng 5 năm 2016.
  168. ^"Tkinter — Python interface to TCL/Tk".Lưu trữ bản gốc ngày 18 tháng 10 năm 2012. Truy cập ngày 9 tháng 6 năm 2023.
  169. ^"Python Tkinter Tutorial". ngày 3 tháng 6 năm 2020.Lưu trữ bản gốc ngày 9 tháng 6 năm 2023. Truy cập ngày 9 tháng 6 năm 2023.
  170. ^"Installers for GIMP for Windows - Frequently Asked Questions". ngày 26 tháng 7 năm 2013.Bản gốc lưu trữ ngày 17 tháng 7 năm 2013. Truy cập ngày 26 tháng 7 năm 2013.
  171. ^"Python Setup and Usage". Python Software Foundation.Lưu trữ bản gốc ngày 17 tháng 6 năm 2020. Truy cập ngày 10 tháng 1 năm 2020.
  172. ^"4.0 New Features and Fixes".LibreOffice.org.The Document Foundation. 2013.Lưu trữ bản gốc ngày 9 tháng 2 năm 2014. Truy cập ngày 25 tháng 2 năm 2013.
  173. ^"Frequently asked questions".Godot Engine documentation.Lưu trữ bản gốc ngày 28 tháng 4 năm 2021. Truy cập ngày 10 tháng 5 năm 2021.
  174. ^Strachan, James (ngày 29 tháng 8 năm 2003)."Groovy – the birth of a new dynamic language for the Java platform".Bản gốc lưu trữ ngày 5 tháng 4 năm 2007. Truy cập ngày 11 tháng 6 năm 2007.
  175. ^"Why We Created Julia".Julia website. tháng 2 năm 2012.Lưu trữ bản gốc ngày 2 tháng 5 năm 2020. Truy cập ngày 5 tháng 6 năm 2014.We want something as usable for general programming as Python [...]
  176. ^"Modular Docs - Why Mojo🔥".docs.modular.com (bằng tiếng Anh).Lưu trữ bản gốc ngày 5 tháng 5 năm 2023. Truy cập ngày 5 tháng 5 năm 2023.Mojo as a member of the Python family [..] Embracing Python massively simplifies our design efforts, because most of the syntax is already specified. [..] we decided that the right long-term goal for Mojo is to provide a superset of Python (i.e. be compatible with existing programs) and to embrace the CPython immediately for long-tail ecosystem enablement. To a Python programmer, we expect and hope that Mojo will be immediately familiar, while also providing new tools for developing systems-level code that enable you to do things that Python falls back to C and C++ for.
  177. ^Spencer, Michael (ngày 4 tháng 5 năm 2023)."What is Mojo Programming Language?".datasciencelearningcenter.substack.com (bằng tiếng Anh).Lưu trữ bản gốc ngày 5 tháng 5 năm 2023. Truy cập ngày 5 tháng 5 năm 2023.
  178. ^Yegulalp, Serdar (ngày 16 tháng 1 năm 2017)."Nim language draws from best of Python, Rust, Go, and Lisp".InfoWorld.Lưu trữ bản gốc ngày 13 tháng 10 năm 2018. Truy cập ngày 7 tháng 6 năm 2020.Nim's syntax is strongly reminiscent of Python's, as it uses indented code blocks and some of the same syntax (such as the way if/elif/then/else blocks are constructed).
  179. ^"An Interview with the Creator of Ruby". Linuxdevcenter.com.Lưu trữ bản gốc ngày 28 tháng 4 năm 2018. Truy cập ngày 3 tháng 12 năm 2012.

Liên kết ngoài

[sửa |sửa mã nguồn]
Tìm hiểu thêm về
Python
tạicác dự án liên quan
Tìm kiếm CommonsTập tin phương tiện từ Commons
Tìm kiếm WikiquoteDanh ngôn từ Wikiquote
Tìm kiếm WikibooksTủ sách giáo khoa từ Wikibooks
Tìm kiếm WikiversityTài nguyên học tập từ Wikiversity
Tìm kiếm WikidataDữ liệu từ Wikidata
Dùng cho kỹ nghệ
Dùng trong giảng dạy
Có giá trị lịch sử
Chung
Danh sách các phần mềm nguồn mở
Lịch sử phần mềm tự do nguồn mở
Cộng đồng
Bản quyền phần mềm tự do
Các dạng bản quyền
và các tiêu chuẩn
Các thách thức
Chủ đề liên quan
Tiêu đề chuẩnSửa dữ liệu tại Wikidata
Lấy từ “https://vi.wikipedia.org/w/index.php?title=Python_(ngôn_ngữ_lập_trình)&oldid=72768851
Thể loại:
Thể loại ẩn:

[8]ページ先頭

©2009-2025 Movatter.jp