Trong python, ta có thể ghi dữ liệu ra nguồn nào?

Trụ sở chính:

Văn phòng: Số 27-3RD, Sunrise D, The Manor Central Park, đường Nguyễn Xiển, phường Đại Kim, quận Hoàng Mai, TP. Hà Nội.

Liên hệ truyền thông: 0929.536.185

Email: [email protected]

Chịu trách nhiệm nội dung: Ông Trần Anh Tú

TEK4.VN giữ bản quyền nội dung trên website này. Cấm sao chép dưới mọi hình thức nếu không có sự chấp thuận bằng văn bản.

Python

Mẫu hìnhThiết kế bởiNhà phát triểnXuất hiện lần đầuPhiên bản ổn địnhBản xem thửKiểm tra kiểuGiấy phépPhần mở rộng tên tập tinTrang mạngCác trình thực hiện lớnPhương ngữẢnh hưởng từẢnh hưởng tới
Ngôn ngữ lập trình hướng đối tượng, lập trình câu lệnh, lập trình hàm, lập trình thủ tục, lập trình phản xạ
Guido van Rossum
Python Software Foundation
1991; 31 năm trước

3.10.7[1] 

/ 7 tháng 9 2022

3.11.0rc2[2] 

/ 12 tháng 9 2022

Vịt, động, mạnh

từ phiên bản 3.5:

dần dần[3]
Giấy phép Python Software Foundation
.py,.pyc,.pyd,.pyo [trước 3.5],[4] Bản mẫu:Notatypo,.pyz [từ 3.5][5]
www.python.org
CPython, IronPython, Jython, MicroPython, Numba, PyPy, Stackless Python
Cython, RPython, Starlark[6]
ABC,[7] ALGOL 68,[8] C,[9] C++,[10] CLU,[11] Dylan,[12] Haskell,[13] Icon,[14] Java,[15] Lisp,[16] Modula-3,[10] Perl, Smalltalk
Boo, Cobra, CoffeeScript,[17] D, F#, Falcon, Genie,[18] Go, Apache Groovy, JavaScript,[19][20] Julia,[21] Nim, Ring,[22] Ruby,[23] Swift[24]

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 hoàn toàn tạo kiểu động và dùng cơ chế cấp phát bộ nhớ tự động; do vậy nó tương tự như Perl, Ruby, Scheme, Smalltalk, và Tcl. Python được phát triển trong một dự án mã mở, do tổ chức phi lợi nhuận Python Software Foundation quản lý.[28]

Ban đầu, Python được phát triển để chạy trên nền Unix. Nhưng rồi theo thời gian, Python dần mở rộng sang mọi hệ điều hành từ MS-DOS đến Mac OS, OS/2, Windows, Linux và các hệ điều hành khác thuộc họ Unix. Mặc dù sự phát triển của Python có sự đóng góp của rất nhiều cá nhân, nhưng Guido van Rossum hiện nay vẫn là tác giả chủ yếu của Python. Ông giữ vai trò chủ chốt trong việc quyết định hướng phát triển 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]

Lịch sử[sửa | sửa mã nguồn]

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 & 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[34], có khả năng xử lí ngoại lệ và giao tiếp với hệ điều hành Amoeba.[35] Nó bất đầu được triển khai vào tháng Mười Hai năm 1989[36]. 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 Bảy năm 2018, khi ông thông báo rằng ông sẽ rời bỏ trách nhiệm của ông và cả danh hiệu "Nhà độc tài nhân từ cho cuộc sống" của Python, một danh hiệu mà cộng đồng Python đã trao tặng cho ông vì sự tận tuỵ lâu dài của ông với vai trò là người ra quyết định chính cho dự án.[37] Vào tháng Một năm 2019, các nhà phát triển phần lõi Python đã bầu ra một "Hội đồng Chèo lài" gồm năm thành viên để dẫn dắt dự án.[38][39]

Python 2.0 được ra mắt vào ngày 16 tháng Mười năm 2000, với nhiều tính năng mới mẻ, bao gồm một bộ dọn rác phát hiện theo chu kỳ và khả năng hỗ trợ Unicode.[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 xúc tiến[44] vì tất cả các phiên bản trước của Python [bao gồm cả 2.7[45]] gặp một số vấn đề bảo mật, có thể dẫn đến thực thị mã từ xa[46] và "đầu độc" bộ nhớ đệm.[47]

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

Python là một ngôn ngữ lập trình đa mẫu hình. Lập trình hướng đối tượng và lập trình cấu trúc được hỗ trợ hoàn toàn, và nhiều tính năng của nó cũng hỗ trợ lập trình hàm và lập trình hướng khía cạnh [bao gồm siêu lập trình[48] và siêu đối tượng [phương thức thần kì]].[49] Các mẫu hình khác cũng được hỗ trợ thông qua các phần mở rộng, bao gồm thiết kế theo hợp đồng[50][51] và lập trình logic.[52]

Python sử dụng kiểu động và một dạng kết hợp giữa đếm tham chiếu và bộ dọn rác kiểm tra theo chu kì để quản lí bộ nhớ.[53] Nó cũng có tính năng phân giải tên động [liên kết muộn], cho phép liên kết các tên biến và phương thức trong quá trình thực thi chương trình.

Thiết kế của Python cung cấp một số tính năng cho lập trình hàm giống như trong ngôn ngữ Lisp. Python có các hàm filter, 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ất cả các tính năng vào phần cốt lõi, Python được thiết kế để dễ dàng mở rộng [bằng các mô đun]. Tính mô đun nhỏ gọn này đã làm cho Python trở nên phổ biến như là một cách thêm các giao diện lập trình được vào các ứng dụng hiện có. Tầm nhìn của Van Rossum về một ngôn ngữ có phần lõi nhỏ với một thứ viện chuẩn rộng lớn và một trình thông dịch dễ dàng mở rộng bắt nguồn từ việc ông nản lòng trước ABC, một ngôn ngữ lập trình tán thành hướng tiếp cận ngược lại[33]. Python thường được mô tả là một ngôn ngữ "tặng kèm pin" nhờ vào thư viện chuẩn bao quát của nó.[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à phát triển Python nỗ lực tránh xa việc tối ưu hoá quá sớm và không chấp nhận các bản vá không cải thiện đáng kể tốc độ mà lại làm mất đi tính rõ ràng lên những phần không thiết yếu của bản thực hiện tham khảo CPython.[58] Khi cần đến tốc độ, một lập trình viên Python có thể di chuyển các hàm bị giới hạn về thời gian sang các mô đun mở rộng được viết bằng những ngôn ngữ như C, hoặc sử dụng PyPy, một trình biên dịch tức thời. Cython cũng có thể được dùng để phiên dịch một tập lệnh Python sang C và tạo ra các lệnh gọi API ở cấp độ của C trực tiếp vào trình thông dịch Python.

Mục tiêu mà các nhà phát triển Python hướng đến là đem đến niềm vui khi sử dụng ngôn ngữ này. Điều này được thể hiện qua bản thân cái tên – một sự tôn vinh dành cho nhóm hài người Anh Monty Python[59] – và trong một số cách tiếp cận thi thoảng vui tươi trong hướng dẫn và các tài liệu tham khảo, chẳng hạn như một vi dụ có đề cập đến trứng và spam [gợi nhắc đến một tiểu phẩm trong Monty Python] thay cho foo và bar tiêu chuẩn.[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]

Cú pháp[sửa | sửa mã nguồn]

Python là một ngôn ngữ dễ đọc, dễ hiểu. Định dạng của nó rất gọn gàng về mặt trực quan, và nó thường sử dụng các từ khoá tiếng Anh trong khi các ngôn ngữ khác lại sử dụng các dấu câu. Khác với nhiều ngôn ngữ khác, nó không sử dụng các dấu ngoặc nhọn để giới hạn các khối lệnh, và dấu chấm phẩy cuối câu lệnh rất ít khi được sử dụng dù không bị cấm. Nó có ít ngoại lệ cú pháp và trường hợp đặc biệt hơn C và Pascal.[66]

Thụt lề[sửa | sửa mã nguồn]

Python sử dụng thụt lề bằng khoảng trắng hoặc ký tự tab thay vì dùng ngoặc nhọn hay các từ khoá để giới hạn khối lệnh. Lề thường được thụt vào sau một câu lệnh và thụt ra để đánh dấu kết thúc khối lệnh hiện tại. Cho nên, cấu trúc trực quan của chương trình sẽ thể hiện một cách chính xác cấu trúc ngữ nghĩa của chương trình đó.[67] Tính năng này thỉnh thoảng cũng được gọi là "quy tắc việt vị", mà 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.[68]

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ụ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.

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 /.[70] Python cũng sử dụng toán tử ** cho các 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 các thư viện như NumPy để nhân ma trận.[71][72]
  • 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.[73]
  • Trong Python, == so sánh theo giá trị, khác với Java, vốn so sánh các số theo giá trị[74] và các đối tượng theo tham chiếu.[75] [So sánh giá trị trong Java có thể được thực hiện bằng phương thức equals[].] 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, thi dụ như a

Chủ Đề