Python chung FAQ¶
Thông tin chung¶
Python là gì?¶
Python là ngôn ngữ lập trình hướng đối tượng, có tính tương tác, được diễn giải. Nó kết hợp các mô-đun, ngoại lệ, kiểu gõ động, các kiểu dữ liệu động cấp rất cao và các lớp. Nó hỗ trợ nhiều mô hình lập trình ngoài lập trình hướng đối tượng, chẳng hạn như lập trình thủ tục và chức năng. Python kết hợp sức mạnh vượt trội với cú pháp rất rõ ràng. Nó có giao diện với nhiều lệnh gọi hệ thống và thư viện cũng như với các hệ thống cửa sổ khác nhau và có thể mở rộng bằng C hoặc C++. Nó cũng có thể được sử dụng làm ngôn ngữ mở rộng cho các ứng dụng cần giao diện lập trình được. Cuối cùng, Python có tính di động: nó chạy trên nhiều biến thể Unix bao gồm Linux và macOS cũng như trên Windows.
Để tìm hiểu thêm, hãy bắt đầu với Hướng dẫn Python. Zz001zz liên kết đến các hướng dẫn và tài nguyên giới thiệu khác để học Python.
Nền tảng phần mềm Python là gì?¶
Quỹ phần mềm Python là một tổ chức phi lợi nhuận độc lập giữ bản quyền trên các phiên bản Python 2.1 trở lên. Sứ mệnh của PSF là nâng cao công nghệ nguồn mở liên quan đến ngôn ngữ lập trình Python và phổ biến việc sử dụng Python. Trang chủ của PSF ở https://www.python.org/psf/.
Các khoản quyên góp cho PSF được miễn thuế ở Hoa Kỳ. Nếu bạn sử dụng Python và thấy nó hữu ích, vui lòng đóng góp qua the PSF donation page.
Có hạn chế về bản quyền đối với việc sử dụng Python không?¶
Bạn có thể làm bất cứ điều gì bạn muốn với nguồn, miễn là bạn để lại bản quyền và hiển thị các bản quyền đó trong bất kỳ tài liệu nào về Python mà bạn tạo ra. Nếu bạn tôn trọng các quy tắc bản quyền, bạn có thể sử dụng Python cho mục đích thương mại, bán bản sao Python ở dạng nguồn hoặc dạng nhị phân (đã sửa đổi hoặc chưa sửa đổi) hoặc bán các sản phẩm kết hợp Python ở một dạng nào đó. Tất nhiên, chúng tôi vẫn muốn biết về tất cả việc sử dụng Python cho mục đích thương mại.
Xem the license page để tìm thêm giải thích và văn bản đầy đủ của Giấy phép PSF.
Logo Python đã được đăng ký nhãn hiệu và trong một số trường hợp nhất định cần có sự cho phép để sử dụng nó. Tham khảo the Trademark Usage Policy để biết thêm thông tin.
Tại sao Python được tạo ra ngay từ đầu?¶
Đây là bản tóm tắt ngắn gọn về very về những gì đã bắt đầu tất cả, được viết bởi Guido van Rossum:
Tôi đã có nhiều kinh nghiệm trong việc triển khai ngôn ngữ thông dịch trong nhóm ABC tại CWI và khi làm việc với nhóm này, tôi đã học được rất nhiều điều về thiết kế ngôn ngữ. Đây là nguồn gốc của nhiều tính năng của Python, bao gồm việc sử dụng thụt lề để nhóm câu lệnh và bao gồm các kiểu dữ liệu cấp rất cao (mặc dù các chi tiết đều khác nhau trong Python).
Tôi có một số phàn nàn về ngôn ngữ ABC nhưng cũng thích nhiều tính năng của nó. Không thể mở rộng ngôn ngữ ABC (hoặc cách triển khai nó) để giải quyết những phàn nàn của tôi -- trên thực tế, việc thiếu khả năng mở rộng là một trong những vấn đề lớn nhất của nó. Tôi đã có một số kinh nghiệm sử dụng Modula-2+ và đã nói chuyện với các nhà thiết kế Modula-3 cũng như đọc báo cáo Modula-3. Modula-3 là nguồn gốc của cú pháp và ngữ nghĩa được sử dụng cho các trường hợp ngoại lệ và một số tính năng Python khác.
Tôi đang làm việc trong nhóm hệ điều hành phân tán Amoeba tại CWI. We needed a better way to do system administration than by writing either C programs or Bourne shell scripts, since Amoeba had its own system call interface which wasn't easily accessible from the Bourne shell. Kinh nghiệm xử lý lỗi trong Amoeba khiến tôi nhận thức sâu sắc tầm quan trọng của các ngoại lệ như một tính năng của ngôn ngữ lập trình.
Tôi chợt nhận ra rằng một ngôn ngữ kịch bản có cú pháp như ABC nhưng có quyền truy cập vào các lệnh gọi hệ thống Amoeba sẽ đáp ứng nhu cầu. Tôi nhận ra rằng sẽ thật ngu ngốc nếu viết một ngôn ngữ dành riêng cho amip, vì vậy tôi quyết định rằng tôi cần một ngôn ngữ có khả năng mở rộng nói chung.
Trong kỳ nghỉ lễ Giáng sinh năm 1989, tôi có rất nhiều thời gian nên tôi quyết định thử. Trong năm tiếp theo, trong khi vẫn chủ yếu làm việc với thời gian riêng của mình, Python đã được sử dụng trong dự án Amoeba với mức độ thành công ngày càng tăng và phản hồi từ các đồng nghiệp đã khiến tôi có thêm nhiều cải tiến ban đầu.
Vào tháng 2 năm 1991, chỉ sau hơn một năm phát triển, tôi quyết định đăng bài lên USENET. Phần còn lại nằm trong file
Misc/HISTORY.
Python tốt cho việc gì?¶
Python là ngôn ngữ lập trình đa năng cấp cao có thể được áp dụng cho nhiều loại vấn đề khác nhau.
Ngôn ngữ đi kèm với một thư viện tiêu chuẩn lớn bao gồm các lĩnh vực như xử lý chuỗi (biểu thức thông thường, Unicode, tính toán sự khác biệt giữa các tệp), giao thức internet (HTTP, FTP, SMTP, XML-RPC, POP, IMAP), kỹ thuật phần mềm (kiểm tra đơn vị, ghi nhật ký, lập hồ sơ, phân tích mã Python) và giao diện hệ điều hành (cuộc gọi hệ thống, hệ thống tệp, TCP/IP) ổ cắm). Nhìn vào mục lục của Thư viện chuẩn Python để biết những gì có sẵn. Một loạt các tiện ích mở rộng của bên thứ ba cũng có sẵn. Tham khảo the Python Package Index để tìm các gói bạn quan tâm.
Lược đồ đánh số phiên bản Python hoạt động như thế nào?¶
Các phiên bản Python được đánh số "A.B.C" hoặc "A.B":
A là số phiên bản chính -- nó chỉ được tăng lên khi có những thay đổi thực sự lớn trong ngôn ngữ.
B là số phiên bản phụ -- nó được tăng lên để có những thay đổi ít gây chấn động hơn.
C là số phiên bản vi mô -- số này được tăng lên sau mỗi lần phát hành bản sửa lỗi.
Không phải tất cả các bản phát hành đều là bản phát hành sửa lỗi. Trong quá trình chuẩn bị phát hành tính năng mới, một loạt các bản phát hành phát triển được tạo ra, được ký hiệu là ứng cử viên alpha, beta hoặc bản phát hành. Alpha là những bản phát hành sớm trong đó giao diện chưa được hoàn thiện; không có gì ngạc nhiên khi thấy sự thay đổi về giao diện giữa hai bản phát hành alpha. Các bản beta ổn định hơn, duy trì các giao diện hiện có nhưng có thể thêm các mô-đun mới và các ứng cử viên phát hành bị đóng băng, không thực hiện thay đổi nào ngoại trừ khi cần thiết để sửa các lỗi nghiêm trọng.
Các phiên bản ứng viên Alpha, beta và phát hành có thêm hậu tố:
Hậu tố cho phiên bản alpha là "aN" cho một số nhỏ N.
Hậu tố cho phiên bản beta là "bN" cho một số nhỏ N.
Hậu tố cho phiên bản đề xuất phát hành là "rcN" cho một số nhỏ N.
Nói cách khác, tất cả các phiên bản có nhãn 2.0aN đều có trước các phiên bản có nhãn 2.0bN, trước các phiên bản có nhãn 2.0rcN và those có trước 2.0.
Bạn cũng có thể tìm thấy số phiên bản có hậu tố "+", ví dụ: "2.2+". Đây là những phiên bản chưa được phát hành, được xây dựng trực tiếp từ kho phát triển CPython. Trong thực tế, sau khi bản phát hành nhỏ cuối cùng được tạo ra, phiên bản này sẽ được tăng lên phiên bản nhỏ tiếp theo, trở thành phiên bản "a0", ví dụ: "2.4a0".
Xem Developer's Guide để biết thêm thông tin về chu trình phát triển và PEP 387 để tìm hiểu thêm về chính sách tương thích ngược của Python. Xem thêm tài liệu về sys.version, sys.hexversion và sys.version_info.
Làm cách nào để có được bản sao của nguồn Python?¶
Bản phân phối nguồn Python mới nhất luôn có sẵn từ python.org, tại https://www.python.org/downloads/.. Bạn có thể lấy các nguồn phát triển mới nhất tại https://github.com/python/cpython/.
Bản phân phối nguồn là một tệp tar được nén bằng gzipped chứa nguồn C hoàn chỉnh, tài liệu có định dạng Sphinx, mô-đun thư viện Python, chương trình ví dụ và một số phần mềm hữu ích có thể phân phối tự do. Nguồn sẽ biên dịch và chạy ngay trên hầu hết các nền tảng UNIX.
Tham khảo Getting Started section of the Python Developer's Guide để biết thêm thông tin về cách lấy mã nguồn và biên dịch nó.
Làm cách nào để lấy tài liệu về Python?¶
Tài liệu tiêu chuẩn cho phiên bản ổn định hiện tại của Python có sẵn tại https://python.go-mizu.dev/. EPUB, văn bản thuần túy và các phiên bản HTML có thể tải xuống cũng có sẵn tại https://python.go-mizu.dev/download.html.
Tài liệu được viết bằng reStructuredText và được xử lý bởi the Sphinx documentation tool. Nguồn reStructuredText cho tài liệu này là một phần của bản phân phối nguồn Python.
Tôi chưa bao giờ lập trình trước đây. Có hướng dẫn Python không?¶
Có rất nhiều hướng dẫn và sách có sẵn. Tài liệu tiêu chuẩn bao gồm Hướng dẫn Python.
Tham khảo the Beginner's Guide để tìm thông tin dành cho người mới bắt đầu lập trình Python, bao gồm danh sách các hướng dẫn.
Có nhóm tin hoặc danh sách gửi thư nào dành cho Python không?¶
Có một nhóm tin, comp.lang.python, và một danh sách gửi thư, python-list. Nhóm tin và danh sách gửi thư được kết nối với nhau -- nếu bạn có thể đọc tin tức thì không cần thiết phải đăng ký vào danh sách gửi thư. comp.lang.python có lưu lượng truy cập cao, nhận được hàng trăm bài đăng mỗi ngày và người đọc Usenet thường có khả năng xử lý khối lượng này tốt hơn.
Bạn có thể tìm thấy thông báo về các sự kiện và bản phát hành phần mềm mới trong comp.lang.python.announce, một danh sách được kiểm duyệt có lưu lượng truy cập thấp, nhận được khoảng năm bài đăng mỗi ngày. Nó có sẵn dưới dạng the python-announce mailing list.
Thông tin thêm về các danh sách gửi thư và nhóm tin khác có thể được tìm thấy tại https://www.python.org/community/lists/.
Làm cách nào để có được phiên bản thử nghiệm beta của Python?¶
Các bản phát hành alpha và beta có sẵn từ https://www.python.org/downloads/.. Tất cả các bản phát hành đều được công bố trên các nhóm tin comp.lang.python và comp.lang.python.announce và trên trang chủ Python tại https://www.python.org/;, nguồn cấp tin tức RSS có sẵn.
Bạn cũng có thể truy cập phiên bản phát triển của Python thông qua Git. Xem The Python Developer's Guide để biết chi tiết.
Làm cách nào để gửi báo cáo lỗi và bản vá cho Python?¶
Để báo cáo lỗi hoặc gửi bản vá, hãy sử dụng trình theo dõi vấn đề tại https://github.com/tamnd/python-docs-vi/issues.
Để biết thêm thông tin về cách Python được phát triển, hãy tham khảo the Python Developer's Guide.
Có bài viết nào đã xuất bản về Python mà tôi có thể tham khảo không?¶
Có lẽ tốt nhất bạn nên trích dẫn cuốn sách yêu thích của bạn về Python.
Zz000zz về Python được viết vào năm 1991 và hiện đã khá lỗi thời.
Guido van Rossum và Jelke de Boer, "Thử nghiệm tương tác các máy chủ từ xa bằng ngôn ngữ lập trình Python", CWI Hàng quý, Tập 4, Số 4 (Tháng 12 năm 1991), Amsterdam, trang 283--303.
Có sách nào về Python không?¶
Vâng, có rất nhiều và nhiều hơn nữa đang được xuất bản. Xem wiki python.org tại https://wiki.python.org/moin/PythonBooks để biết danh sách.
Bạn cũng có thể tìm kiếm "Python" trên các hiệu sách trực tuyến và lọc ra các tài liệu tham khảo về Monty Python; hoặc có thể tìm kiếm "Python" và "ngôn ngữ".
www.python.org nằm ở đâu trên thế giới?¶
Cơ sở hạ tầng của dự án Python được đặt trên khắp thế giới và được quản lý bởi Nhóm cơ sở hạ tầng Python. Chi tiết here.
Tại sao nó được gọi là Python?¶
Khi bắt đầu triển khai Python, Guido van Rossum cũng đang đọc các kịch bản đã xuất bản từ "Monty Python's Flying Circus", một bộ phim hài BBC từ những năm 1970. Van Rossum nghĩ rằng ông cần một cái tên ngắn gọn, độc đáo và hơi bí ẩn nên ông quyết định gọi ngôn ngữ này là Python.
Tôi có nhất thiết phải thích "Rạp xiếc bay của Monty Python" không?¶
Không, nhưng nó giúp ích. :)
Python trong thế giới thực¶
Python ổn định đến mức nào?¶
Rất ổn định. Các bản phát hành mới, ổn định được tung ra khoảng 6 đến 18 tháng một lần kể từ năm 1991 và điều này dường như sẽ tiếp tục. Kể từ phiên bản 3.9, Python sẽ có bản phát hành tính năng mới 12 tháng một lần (PEP 602).
Các nhà phát triển phát hành các bản phát hành sửa lỗi của các phiên bản cũ hơn, do đó độ ổn định của các bản phát hành hiện tại dần được cải thiện. Các bản phát hành sửa lỗi, được biểu thị bằng thành phần thứ ba của số phiên bản (ví dụ: 3.5.3, 3.6.2), được quản lý để đảm bảo tính ổn định; chỉ các bản sửa lỗi cho các sự cố đã biết mới được đưa vào bản phát hành sửa lỗi và đảm bảo rằng các giao diện sẽ giữ nguyên trong suốt một loạt bản phát hành bản sửa lỗi.
Bạn luôn có thể tìm thấy các bản phát hành ổn định mới nhất trên Python download page. Python 3.x là phiên bản được đề xuất và hỗ trợ bởi hầu hết các thư viện được sử dụng rộng rãi. Python 2.x is not maintained anymore.
Có bao nhiêu người đang sử dụng Python?¶
Có lẽ có hàng triệu người dùng, mặc dù rất khó để có được con số chính xác.
Python có sẵn để tải xuống miễn phí, do đó không có số liệu bán hàng và nó có sẵn từ nhiều trang web khác nhau và được đóng gói với nhiều bản phân phối Linux, vì vậy số liệu thống kê về lượt tải xuống cũng không nói lên toàn bộ câu chuyện.
Nhóm tin comp.lang.python hoạt động rất tích cực nhưng không phải tất cả người dùng Python đều đăng bài lên nhóm hoặc thậm chí đọc nó.
Có dự án quan trọng nào được thực hiện bằng Python không?¶
Xem https://www.python.org/about/success để biết danh sách các dự án sử dụng Python. Tư vấn thủ tục tố tụng cho past Python conferences sẽ tiết lộ sự đóng góp của nhiều công ty và tổ chức khác nhau.
Các dự án Python cao cấp bao gồm the Mailman mailing list manager và the Zope application server. Một số bản phân phối Linux, đáng chú ý nhất là Red Hat, đã viết một phần hoặc toàn bộ trình cài đặt và phần mềm quản trị hệ thống bằng Python. Các công ty sử dụng Python trong nội bộ bao gồm Google, Yahoo và Lucasfilm Ltd.
Những phát triển mới nào được mong đợi cho Python trong tương lai?¶
Xem https://peps.python.org/ để biết Đề xuất cải tiến Python (PEP). PEP là tài liệu thiết kế mô tả một tính năng mới được đề xuất cho Python, cung cấp thông số kỹ thuật ngắn gọn và cơ sở lý luận. Hãy tìm PEP có tiêu đề "Lịch phát hành Python X.Y", trong đó X.Y là phiên bản chưa được phát hành công khai.
Sự phát triển mới được thảo luận trên the python-dev mailing list.
Có hợp lý không khi đề xuất những thay đổi không tương thích với Python?¶
Nói chung là không. Hiện đã có hàng triệu dòng mã Python trên khắp thế giới, do đó, bất kỳ thay đổi nào trong ngôn ngữ làm vô hiệu hóa hơn một phần rất nhỏ các chương trình hiện có đều phải được phản đối. Ngay cả khi bạn có thể cung cấp chương trình chuyển đổi, vẫn có vấn đề về cập nhật tất cả tài liệu; many books have been written about Python, and we don't want to invalidate them all at a single stroke.
Việc cung cấp lộ trình nâng cấp dần dần là cần thiết nếu cần thay đổi một tính năng. PEP 5 mô tả quy trình được thực hiện để đưa ra các thay đổi không tương thích ngược đồng thời giảm thiểu sự gián đoạn cho người dùng.
Python có phải là ngôn ngữ tốt cho người mới bắt đầu lập trình không?¶
Đúng.
Việc bắt đầu học sinh bằng ngôn ngữ thủ tục và gõ tĩnh như Pascal, C hoặc một tập hợp con của C++ hoặc Java vẫn là điều phổ biến. Học sinh có thể được phục vụ tốt hơn bằng cách học Python như ngôn ngữ đầu tiên của họ. Python có cú pháp rất đơn giản và nhất quán cũng như một thư viện tiêu chuẩn lớn và quan trọng nhất là việc sử dụng Python trong khóa học lập trình mới bắt đầu cho phép sinh viên tập trung vào các kỹ năng lập trình quan trọng như phân rã vấn đề và thiết kế kiểu dữ liệu. Với Python, học sinh có thể nhanh chóng được làm quen với các khái niệm cơ bản như vòng lặp và thủ tục. Họ thậm chí có thể làm việc với các đối tượng do người dùng xác định ngay trong khóa học đầu tiên.
Đối với một sinh viên chưa từng lập trình trước đây, việc sử dụng ngôn ngữ gõ tĩnh có vẻ không tự nhiên. Nó thể hiện sự phức tạp bổ sung mà sinh viên phải nắm vững và làm chậm tốc độ của khóa học. Các sinh viên đang cố gắng học cách suy nghĩ như một chiếc máy tính, phân tích vấn đề, thiết kế giao diện nhất quán và đóng gói dữ liệu. Mặc dù việc học cách sử dụng ngôn ngữ gõ tĩnh là quan trọng về lâu dài nhưng đây không nhất thiết là chủ đề tốt nhất để giải quyết trong khóa học lập trình đầu tiên của sinh viên.
Nhiều khía cạnh khác của Python khiến nó trở thành ngôn ngữ đầu tiên tốt. Giống như Java, Python có một thư viện tiêu chuẩn lớn để sinh viên có thể được giao các dự án lập trình từ rất sớm trong khóa học do gì đó. Bài tập không bị giới hạn ở máy tính bốn chức năng tiêu chuẩn và chương trình cân bằng kiểm tra. Bằng cách sử dụng thư viện tiêu chuẩn, sinh viên có thể hài lòng khi làm việc trên các ứng dụng thực tế khi họ tìm hiểu các nguyên tắc cơ bản về lập trình. Việc sử dụng thư viện tiêu chuẩn cũng dạy cho học sinh về cách sử dụng lại mã. Các mô-đun của bên thứ ba như PyGame cũng hữu ích trong việc mở rộng phạm vi tiếp cận của học sinh.
Trình thông dịch tương tác của Python cho phép sinh viên kiểm tra các tính năng ngôn ngữ trong khi lập trình. Họ có thể giữ một cửa sổ có trình thông dịch đang chạy trong khi họ nhập nguồn chương trình của mình vào một cửa sổ khác. Nếu họ không thể nhớ các phương thức của một danh sách, họ có thể làm những việc như thế này:
>>> L = []
>>> dir(L)
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__',
'__dir__', '__doc__', '__eq__', '__format__', '__ge__',
'__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__',
'__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__',
'__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__',
'__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__',
'__sizeof__', '__str__', '__subclasshook__', 'append', 'clear',
'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove',
'reverse', 'sort']
>>> [d for d in dir(L) if '__' not in d]
['append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
>>> help(L.append)
Help on built-in function append:
append(...)
L.append(object) -> None -- append object to end
>>> L.append(1)
>>> L
[1]
Với trình thông dịch, tài liệu không bao giờ xa tầm với của học sinh khi họ đang lập trình.
Ngoài ra còn có các IDE tốt cho Python. IDLE là IDE đa nền tảng dành cho Python được viết bằng Python sử dụng Tkinter. Người dùng Emacs sẽ rất vui khi biết rằng có một chế độ Python rất tốt dành cho Emacs. Tất cả các môi trường lập trình này đều cung cấp tính năng tô sáng cú pháp, tự động thụt lề và truy cập vào trình thông dịch tương tác trong khi mã hóa. Tham khảo the Python wiki để biết danh sách đầy đủ các môi trường chỉnh sửa Python.
Nếu bạn muốn thảo luận về việc sử dụng Python trong giáo dục, bạn có thể muốn tham gia the edu-sig mailing list.