Ngôn ngữ Python

Đánh giá bài viết post

Mục Lục

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

Python 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. 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. Vào tháng 7 năm 2018, Van Rossum đã từ chức Leader trong cộng đồng ngôn ngữ Python sau 30 năm lãnh đạo.

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

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.

Lịch sử

Sự phát triển Python đến nay có thể chia làm các giai đoạn:

Python 1: bao gồm các bản phát hành 1.x. Giai đoạn này, kéo dài từ đầu đến cuối thập niên 1990. Từ năm 1990 đến 1995, Guido làm việc tại CWI (Centrum voor Wiskunde en Informatica – Trung tâm Toán-Tin học tại Amsterdam, Hà Lan). Vì vậy, các phiên bản Python đầu tiên đều do CWI phát hành. Phiên bản cuối cùng phát hành tại CWI là 1.2.
Vào năm 1995, Guido chuyển sang CNRI (Corporation for National Research Initiatives) ở Reston, Virginia. Tại đây, ông phát hành một số phiên bản khác. Python 1.6 là phiên bản cuối cùng phát hành tại CNRI.
Sau bản phát hành 1.6, Guido rời bỏ CNRI để làm việc với các lập trình viên chuyên viết phần mềm thương mại. Tại đây, ông có ý tưởng sử dụng Python với các phần mềm tuân theo chuẩn GPL. Sau đó, CNRI và FSF (Free Software Foundation – Tổ chức phần mềm tự do) đã cùng nhau hợp tác để làm bản quyền Python phù hợp với GPL. Cùng năm đó, Guido được nhận Giải thưởng FSF vì Sự phát triển Phần mềm tự do (Award for the Advancement of Free Software).
Phiên bản 1.6.1 ra đời sau đó là phiên bản đầu tiên tuân theo bản quyền GPL. Tuy nhiên, bản này hoàn toàn giống bản 1.6, trừ một số sửa lỗi cần thiết.
Python 2: vào năm 2000, Guido và nhóm phát triển Python dời đến BeOpen.com và thành lập BeOpen PythonLabs team. Phiên bản Python 2.0 được phát hành tại đây. Sau khi phát hành Python 2.0, Guido và các thành viên PythonLabs gia nhập Digital Creations.
Python 2.1 ra đời kế thừa từ Python 1.6.1 và Python 2.0. Bản quyền của phiên bản này được đổi thành Python Software Foundation License. Từ thời điểm này trở đi, Python thuộc sở hữu của Python Software Foundation (PSF), một tổ chức phi lợi nhuận được thành lập theo mẫu Apache Software Foundation.
Python 3, còn gọi là Python 3000 hoặc Py3K: Dòng 3.x sẽ không hoàn toàn tương thích với dòng 2.x, tuy vậy có công cụ hỗ trợ chuyển đổi từ các phiên bản 2.x sang 3.x. Nguyên tắc chủ đạo để phát triển Python 3.x là “bỏ cách làm việc cũ nhằm hạn chế trùng lặp về mặt chức năng của Python”. Trong PEP (Python Enhancement Proposal) có mô tả chi tiết các thay đổi trong Python.[28] Các đặc điểm mới của Python 3.0 sẽ được trình bày phần cuối bài này.

Đặc điểm

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 che đậy
Đơn giản tốt hơn phức tạp
Phức tạp tốt hơn rắc rối
Dễ đọc

Dễ học, dễ đọc

Python được thiết kế để trở thành một ngôn ngữ dễ học, mã nguồn dễ đọc, bố cục trực quan, dễ hiểu, thể hiện qua các điểm sau:

Từ khóa

  • Python tăng cường sử dụng từ khóa tiếng Anh, hạn chế các ký hiệu và cấu trúc cú pháp so với các ngôn ngữ khác.
  • Python là một ngôn ngữ phân biệt kiểu chữ HOA, chữ thường.
  • Như C/C++, các từ khóa của Python đều ở dạng chữ thường.
anddelforisraise
asserteliffromlambdareturn
breakelseglobalnottry
classexceptiforwhile
continueexecimportpassyield
deffinallyinprint

Khối lệnh

Trong các ngôn ngữ khác, khối lệnh thường được đánh dấu bằng cặp ký hiệu hoặc từ khóa. Ví dụ, trong C/C++, cặp ngoặc nhọn { } được dùng để bao bọc một khối lệnh. Python, trái lại, có một cách rất đặc biệt để tạo khối lệnh, đó là thụt các câu lệnh trong khối vào sâu hơn (về bên phải) so với các câu lệnh của khối lệnh cha chứa nó. Ví dụ, giả sử có đoạn mã sau trong C/C++:

#include <math.h>
//...
delta = b * b – 4 * a * c;
if (delta > 0)
{
    // Khối lệnh mới bắt đầu từ ký tự { đến }
    x1 = (- b + sqrt(delta)) / (2 * a);
    x2 = (- b - sqrt(delta)) / (2 * a);
    printf("Phuong trinh co hai nghiem phan biet:\n");
    printf("x1 = %f; x2 = %f", x1, x2);
}

Đoạn mã trên có thể được viết lại bằng Python như sau:

import math
#...
delta = b * b – 4 * a * c
if delta > 0:
    # Khối lệnh mới, thụt vào đầu dòng
    x1 = (- b + math.sqrt(delta)) / (2 * a)
    x2 = (- b – math.sqrt(delta)) / (2 * a)
    print "Phuong trinh co hai nghiem phan biet:"
    print "x1 = ", x1, "; ", "x2 = ", x2

Ta có thể sử dụng dấu tab hoặc khoảng trống để thụt các câu lệnh vào.

Các bản hiện thực

Python được viết từ những ngôn ngữ khác, tạo ra những bản hiện thực khác nhau. Bản hiện thực Python chính, còn gọi là CPython, được viết bằng C, và được phân phối kèm một thư viện chuẩn lớn được viết hỗn hợp bằng C và Python. CPython có thể chạy trên nhiều nền và khả chuyển trên nhiều nền khác. Dưới đây là các nền trên đó, CPython có thể chạy.

Các hệ điều hành họ Unix: AIX, Darwin, FreeBSD, Mac OS X, NetBSD, Linux, OpenBSD, Solaris,…
Các hệ điều hành dành cho máy desktop: Amiga, AROS, BeOS, Mac OS 9, Microsoft Windows, OS/2, RISC OS.
Các hệ thống nhúng và các hệ đặc biệt: GP2X, Máy ảo Java, Nokia 770 Internet Tablet, Palm OS, PlayStation 2, PlayStation Portable, Psion, QNX, Sharp Zaurus, Symbian OS, Windows CE/Pocket PC, Xbox/XBMC, VxWorks.
Các hệ máy tính lớn và các hệ khác: AS/400, OS/390, Plan 9 from Bell Labs, VMS, z/OS.

Ngoài CPython, còn có hai hiện thực Python khác: Jython cho môi trường Java và IronPython cho môi trường .NET và Mono.

Khả năng mở rộng

Python có thể được mở rộng: nếu ta biết sử dụng C, ta có thể dễ dàng viết và tích hợp vào Python nhiều hàm tùy theo nhu cầu. Các hàm này sẽ trở thành hàm xây dựng sẵn (built-in) của Python. Ta cũng có thể mở rộng chức năng của trình thông dịch, hoặc liên kết các chương trình Python với các thư viện chỉ ở dạng nhị phân (như các thư viện đồ họa do nhà sản xuất thiết bị cung cấp). Hơn thế nữa, ta cũng có thể liên kết trình thông dịch của Python với các ứng dụng viết từ C và sử dụng nó như là một mở rộng hoặc một ngôn ngữ dòng lệnh phụ trợ cho ứng dụng đó.

Trình thông dịch

Python là một ngôn ngữ lập trình dạng thông dịch, do đó có ưu điểm tiết kiệm thời gian phát triển ứng dụng vì không cần phải thực hiện biên dịch và liên kết. Trình thông dịch có thể được sử dụng để chạy file script, hoặc cũng có thể được sử dụng theo cách tương tác. Ở chế độ tương tác, trình thông dịch Python tương tự shell của các hệ điều hành họ Unix, tại đó, ta có thể nhập vào từng biểu thức rồi gõ Enter, và kết quả thực thi sẽ được hiển thị ngay lập tức. Đặc điểm này rất hữu ích cho người mới học, giúp họ nghiên cứu tính năng của ngôn ngữ; hoặc để các lập trình viên chạy thử mã lệnh trong suốt quá trình phát triển phần mềm. Ngoài ra, cũng có thể tận dụng đặc điểm này để thực hiện các phép tính như với máy tính bỏ túi.

Lệnh và cấu trúc điều khiển

Mỗi câu lệnh trong Python nằm trên một dòng mã nguồn. Ta không cần phải kết thúc câu lệnh bằng bất kì ký tự gì. Cũng như các ngôn ngữ khác, Python cũng có các cấu trúc điều khiển. Chúng bao gồm:

Cấu trúc rẽ nhánh: cấu trúc if (có thể sử dụng thêm elif hoặc else), dùng để thực thi có điều kiện một khối mã cụ thể.
Cấu trúc lặp, bao gồm:
Lệnh while: chạy một khối mã cụ thể cho đến khi điều kiện lặp có giá trị false.
Vòng lặp for: lặp qua từng phần tử của một dãy, mỗi phần tử sẽ được đưa vào biến cục bộ để sử dụng với khối mã trong vòng lặp.
Python cũng có từ khóa class dùng để khai báo lớp (sử dụng trong lập trình hướng đối tượng) và lệnh def dùng để định nghĩa hàm.

Hệ thống kiểu dữ liệu

Python sử dụng hệ thống kiểu duck typing, còn gọi là latent typing (tự động xác định kiểu). Có nghĩa là, Python không kiểm tra các ràng buộc về kiểu dữ liệu tại thời điểm dịch, mà là tại thời điểm thực thi. Khi thực thi, nếu một thao tác trên một đối tượng bị thất bại, thì có nghĩa là đối tượng đó không sử dụng một kiểu thích hợp.

Python cũng là một ngôn ngữ định kiểu mạnh. Nó cấm mọi thao tác không hợp lệ, ví dụ cộng một con số vào chuỗi ký tự.

Sử dụng Python, ta không cần phải khai báo biến. Biến được xem là đã khai báo nếu nó được gán một giá trị lần đầu tiên. Căn cứ vào mỗi lần gán, Python sẽ tự động xác định kiểu dữ liệu của biến. Python có một số kiểu dữ liệu thông dụng sau:

  • intlong: số nguyên (trong phiên bản 3.x long được nhập vào trong kiểu int). Độ dài của kiểu số nguyên là tùy ý, chỉ bị giới hạn bởi bộ nhớ máy tính.
  • float: số thực
  • complex: số phức, chẳng hạn 5+4j
  • list: dãy trong đó các phần tử của nó có thể được thay đổi, chẳng hạn [8, 2, 'b', -1.5]. Kiểu dãy khác với kiểu mảng (array) thường gặp trong các ngôn ngữ lập trình ở chỗ các phần tử của dãy không nhất thiết có kiểu giống nhau. Ngoài ra phần tử của dãy còn có thể là một dãy khác.
  • tuple: dãy trong đó các phần tử của nó không thể thay đổi.
  • str: chuỗi ký tự. Từng ký tự trong chuỗi không thể thay đổi. Chuỗi ký tự được đặt trong dấu nháy đơn, hoặc nháy kép.
  • dict: từ điển, còn gọi là “hashtable”: là một cặp các dữ liệu được gắn theo kiểu {từ khóa: giá trị}, trong đó các từ khóa trong một từ điển nhất thiết phải khác nhau. Chẳng hạn {1: "Python", 2: "Pascal"}
  • set: một tập không xếp theo thứ tự, ở đó, mỗi phần tử chỉ xuất hiện một lần.

Ngoài ra, Python còn có nhiều kiểu dữ liệu khác. Xem thêm trong phần “Các kiểu dữ liệu” bên dưới.

Module

Python cho phép chia chương trình thành các module để có thể sử dụng lại trong các chương trình khác. Nó cũng cung cấp sẵn một tập hợp các modules chuẩn mà lập trình viên có thể sử dụng lại trong chương trình của họ. Các module này cung cấp nhiều chức năng hữu ích, như các hàm truy xuất tập tin, các lời gọi hệ thống, trợ giúp lập trình mạng (socket),…

Đa năng

Python là một ngôn ngữ lập trình đơn giản nhưng rất hiệu quả.

So với Unix shell, Python hỗ trợ các chương trình lớn hơn và cung cấp nhiều cấu trúc hơn.
So với C, Python cung cấp nhiều cơ chế kiểm tra lỗi hơn. Nó cũng có sẵn nhiều kiểu dữ liệu cấp cao, ví dụ như các mảng (array) linh hoạt và từ điển (dictionary) mà ta sẽ phải mất nhiều thời gian nếu viết bằng C.
Python là một ngôn ngữ lập trình cấp cao có thể đáp ứng phần lớn yêu cầu của lập trình viên:

Python thích hợp với các chương trình lớn hơn cả AWK và Perl.
Python được sử dụng để lập trình Web. Nó có thể được sử dụng như một ngôn ngữ kịch bản.
Python được thiết kế để có thể nhúng và phục vụ như một ngôn ngữ kịch bản để tuỳ biến và mở rộng các ứng dụng lớn hơn.
Python được tích hợp sẵn nhiều công cụ và có một thư viện chuẩn phong phú, Python cho phép người dùng dễ dàng tạo ra các dịch vụ Web, sử dụng các thành phần COM hay CORBA, hỗ trợ các loại định dạng dữ liệu Internet như email, HTML, XML và các ngôn ngữ đánh dấu khác. Python cũng được cung cấp các thư viện xử lý các giao thức Internet thông dụng như HTTP, FTP,…
Python có khả năng giao tiếp đến hầu hết các loại cơ sở dữ liệu, có khả năng xử lý văn bản, tài liệu hiệu quả, và có thể làm việc tốt với các công nghệ Web khác.
Python đặc biệt hiệu quả trong lập trình tính toán khoa học nhờ các công cụ Python Imaging Library, pyVTK, MayaVi 3D Visualization Toolkits, Numeric Python, ScientificPython,…
Python có thể được sử dụng để phát triển các ứng dụng desktop. Lập trình viên có thể dùng wxPython, PyQt, PyGtk để phát triển các ứng dụng giao diện đồ họa (GUI) chất lượng cao. Python còn hỗ trợ các nền tảng phát triển phần mềm khác như MFC, Carbon, Delphi, X11, Motif, Tk, Fox, FLTK, …
Python cũng có sẵn một unit testing framework để tạo ra các bộ test (test suites).

Multiple paradigms (đa biến hóa)

Python là một ngôn ngữ đa biến hóa (multiple paradigms). Có nghĩa là, thay vì ép buộc mọi người phải sử dụng duy nhất một phương pháp lập trình, Python lại cho phép sử dụng nhiều phương pháp lập trình khác nhau: hướng đối tượng, có cấu trúc, chức năng, hoặc chỉ hướng đến một khía cạnh. Python kiểu kiểu động và sử dụng bộ thu gom rác để quản lý bộ nhớ. Một đặc điểm quan trọng nữa của Python là giải pháp tên động, kết nối tên biến và tên phương thức lại với nhau trong suốt thực thi của chương trình.

Sự tương đương giữa true và một giá trị khác 0

Cũng như C/C++, bất kì một giá trị khác 0 nào cũng tương đương với true và ngược lại, một giá trị 0 tương đương với false. Như vậy:

 if a != 0:

tương đương với

 if a:

Cú pháp

Sau đây là cú pháp cơ bản nhất của ngôn ngữ Python:

Khối lệnh

Khác với đa số ngôn ngữ họ C sử dụng cặp ngoặc ngọn { } để phân chia khối lệnh, Python sử dụng lùi đầu dòng (indentation) như dấu cách hay tab để biểu thị khối lệnh. Các lệnh nằm cùng mức lùi đầu dòng sẽ cùng thuộc một khối. Để biểu thị một khối rỗng Python có từ khoá “pass”.

Toán tử

+ - * / // (phép chia số nguyên) % (chia lấy dư) ** (lũy thừa)
~ (not) & (and) | (or) ^ (xor)
<< (left shift) >> (right shift)
== (bằng) <= >=  != (khác)

Python sử dụng ký pháp trung tố thường gặp trong các ngôn ngữ lập trình khác.

Các kiểu dữ liệu

  • Kiểu số1234585396326 (số nguyên dài vô hạn) -86.12 7.84E-04 2j 3 + 8j
  • Kiểu chuỗi (string)
  • Kiểu bộ (tuple)(1, 2.0, 3) (1,) (“Hello”,1,())
  • Kiểu danh sách (list)[4.8, -6] [‘a’,’b’]
  • Kiểu từ điển (dictionary){“Hanoi”:”Vietnam”, “Haiphong”:”Vietnam”, “Hochiminh”:”Vietnam”, “Amsterdam”:”Netherlands”, “Paris”:”France”}

Chú thích


# dòng chú thích
"" " đa chú thích
    đa chú thích
    đa chú thích " ""

Lệnh gán


tên biến = biểu thức x = 23.8 y = -x ** 2 z1 = z2 = x + y loiChao = "Hello!" i += 1 # tăng biến i thêm 1 đơn vị

In giá trị


print biểu thức print (7 + 8) / 2.0 print (2 + 3j) * (4 - 6j)

Nội suy chuỗi (string interpolation)

print "Hello %s" %("world!")
print "i = %d" %i
print "a = %.2f and b = %.3f" %(a,b)

Cấu trúc rẽ nhánh

  • Dạng 1:if biểu_thức_điều_kiện: # lệnh…
  • Dạng 2:if biểu_thức_điều_kiện: # lệnh… else: # lệnh…
  • Dạng 3:if biểu_thức_điều_kiện_1: # lệnh… (được thực hiện nếu biểu_thức_điều_kiện_1 là đúng/true) elif biểu_thức_điều_kiện_2: # lệnh… (được thực 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)

Cấu trúc lặp


while
biểu_thức_đúng: # lệnh...
for phần_tử in dãy:
    # lệnh...
L = ["Ha Noi", "Hai Phong", "TP Ho Chi Minh"]
for thanhPho in L:
    print thanhPho

for i in range(10):
    print i

Hàm


def
tên_hàm (tham_biến_1, tham_biến_2, tham_biến_n): # lệnh... return giá_trị_hàm
def binhPhuong(x):
    return x*x

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

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

print luyThua(3)   # 9
print luyThua(2,3) # 8

Lớp


class
Tên_Lớp_1: #... class Tên_Lớp_2(Tên_Lớp_1): """Lớp 2 kế thừa lớp 1""" x = 3 # biến thành viên của lớp # def phương_thức(self, tham_biến): #... # khởi tạo a = Tên_Lớp_2() print a.x print a.phương_thức(m) # m là giá trị gán cho tham biến

List Comprehension

List Comprehension là dạng cú pháp đặc biệt (syntactic sugar) (mới có từ Python 2.x) cho phép thao tác trên toàn bộ dãy (list) mà không cần viết rõ vòng lặp. Chẳng hạn y là một dãy mà mỗi phần tử của nó bằng bình phương của từng phần tử trong dãy x:

y = [xi**2 for xi in x]

Xử lý ngoại lệ

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

Tốc độ thực hiện

Là một ngôn ngữ thông dịch, Python có tốc độ thực hiện chậm hơn nhiều lần so với các ngôn ngữ biên dịch như Fortran, C,… Trong số các ngôn ngữ thông dịch, Python được đánh giá nhanh hơn Ruby và Tcl, nhưng chậm hơn Lua.

Các đặc điểm mới trong Python 3.x

Nội dung phần này được trích từ tài liệu của Guido van Rossum. Phần này không liệt kê đầy đủ tất cả các đặc điểm; chi tiết xin xem tài liệu nói trên.

Một số thay đổi cần lưu ý nhất

Lệnh print trở thành hàm print(). Theo đó sau print() ta cần nhớ gõ vào cặp ngoặc ():
print(“Goodbye”)
print(2+3)
Trả lại kết quả không còn là list trong một số trường hợp.
dict.keys(), dict.items(), dict.values() kết quả cho ra các “view” thay vì list.
map và filter trả lại các iterator.
range bây giờ có tác dụng như xrange, và không trả lại list.
So sánh
Không còn hàm cmp, và cmp(a, b) có thể được thay bằng (a > b) – (a < b)

Số nguyên
Kiểu long được đổi tên thành int.
1/2 cho ta kết quả là số thực chứ không phải số nguyên.
Không còn hằng số sys.maxint
Kiểu bát phân được ký hiệu bằng 0o thay vì 0, chẳng hạn 0o26.
Phân biệt văn bản – dữ liệu nhị phân thay vì Unicode – chuỗi 8-bit
Tất cả chuỗi văn bản đều dưới dạng Unicode, nhưng chuỗi Unicode mã hóa lại là dạng dữ liệu nhị phân. Dạng mặc định là UTF-8.
Không thể viết u”a string” để biểu diễn chuỗi như trong các phiên bản 2.x

Các thay đổi về cú pháp

Cú pháp mới

  • Các tham biến chỉ chấp nhận keyword: Các tham biến phía sau *args phải được gọi theo dạng keyword.
  • Từ khóa mới nonlocal. Muốn khai báo một biến x với có phạm vi ảnh hưởng rộng hơn, nhưng chưa đến mức toàn cục, ta dùng nonlocal x.
  • Gán giá trị vào các phần tử tuple một cách thông minh, chẳng hạn có thể viết (a, *rest, b) = range(5) để có được a = 0; b = [1,2,3]; c = 4.
  • Dictionary comprehension, chẳng hạn {k: v for k, v in stuff} thay vì dict(stuff).
  • Kiểu nhị phân, chẳng hạn b110001.

Cú pháp được thay đổi

  • raise [biểu_thức [from biểu_thức]]
  • except lệnh as biến
  • Sử dụng metaclass trong đối tượng:class C(metaclass=M): pass Cách dùng biến __metaclass__ không còn được hỗ trợ.

Cú pháp bị loại bỏ

  • Không còn dấu ``, thay vì đó, dùng repr.
  • Không còn so sánh <> (dùng !=).
  • Không còn các lớp kiểu classic.

Tài liệu lập trình Python cơ bản đến nâng cao

Python là ngôn ngữ lập trình hướng đối tượng bậc cao, dùng để phát triển website và nhiều ứng dụng khác nhau. Với cú pháp cực kì đơn giản và thanh lịch, Python là lựa chọn hoàn hảo cho những ai lần đầu tiên học lập trình.

Cùng với Ruby, Python là ngôn ngữ lập trình giúp developer nhận mức lương cao thứ nhì (khoảng $107,000/năm) tại Mỹ.

Những tài liệu lập trình Python xuất sắc bằng cả tiếng Việt và tiếng Anh trong bài viết này sẽ giúp bạn:

  • Tự học ngôn ngữ lập trình Python cơ bản đến nâng cao
  • Cập nhật kiến thức mới nhất từ các chuyên gia

Python là gì? Học Python để làm gì?

Python là ngôn ngữ lập trình hướng đối tượng bậc cao, dùng để phát triển website và nhiều ứng dụng khác nhau. Python được tạo ra bởi Guido van Rossum và được phát triển trong một dự án mã mở (open source).

Với cú pháp cực kì đơn giản và thanh lịch, Python là lựa chọn hoàn hảo cho những ai lần đầu tiên học lập trình. Tuy nhiên, đây cũng là ngôn ngữ nổi tiếng về sự chặt chẽ, nhanh, mạnh, và có mặt ở mọi hệ điều hành.

Được sử dụng trong lập trình từ những game đơn giản nhất, cho đến những thuật toán tìm kiếm phức tạp nhất, Python không hổ danh là ngôn ngữ dành cho cả newbie lẫn hacker.

Tại sao nên học lập trình Python?

  • Dễ học

Code của Python dễ đọc, ngắn gọn (ngắn hơn code Java 3-5 lần, và C++ 5-10 lần).

  • Bước đệm để học các ngôn ngữ lập trình khác

Python là ngôn ngữ hướng đối tượng được ứng dụng rất đa dạng. Vì vậy, những hiểu biết về cấu trúc và kiến trúc Python sẽ là nền tảng tham chiếu rất tốt khi bạn muốn chuyển sang học các ngôn ngữ lập trình khác.

  • Được trả lương cao

Cùng với Ruby, Python là ngôn ngữ lập trình giúp developer nhận mức lương cao thứ nhì (khoảng $107,000/năm) tại Mỹ.

  • Thiết thực trong thiết kế web/ứng dụng web

Django, web framework được viết bởi Python sẽ khiến lập trình web trở nên đơn giản hơn, giúp code của bạn nhanh và ổn định hơn nhiều, đồng thời tiết kiệm hàng tấn thời gian lập trình.

Là tương lai của trí tuệ nhân tạo
Nhờ tính linh hoạt của ngôn ngữ, tốc độ xử lý, và các tính năng Machine Learning được cung cấp bởi các libraries như scikit-learn, Keras, và TensorFlow.

SÁCH PYTHON CƠ BẢN

1. Python cơ bản

Ebook Python tiếng Việt siêu cơ bản của Võ Tuấn Duy.

Bao gồm 15 chương, mỗi chương trình bày một khía cạnh của Python thông qua những trải nghiệm thực tế của tác giả.
Lối viết đơn giản, sáng rõ.
Tài liệu miễn phí này sẽ giúp bạn nhanh chóng tự học ngôn ngữ lập trình Python.

2. A Byte of Python

Tài liệu Python siêu dễ, siêu cơ bản:

  • Dành cho người hoàn toàn chưa có kiến thức gì về lập trình.
  • Cung cấp các chỉ dẫn và tutorial để bước đầu làm quen với ngôn ngữ lập trình Python.
  • Miễn phí.

3. Think Python 2nd Edition

Một tài liệu Python miễn phí khác. So với hai cuốn sách ở trên, Think Python nâng cao hơn một chút (nhưng vẫn rất cơ bản và dễ). Ưu điểm:

Sử dụng Python 3.
Hướng dẫn chạy Python trên trình duyệt có sẵn.
Giới thiệu thêm một số tính năng thú vị của Python, như: các cấu trúc dữ liệu bổ sung, list comprehensions.v.v…
Bài tập rất thú vị, đòi hỏi tư duy.

4. Automate the Boring Stuff with Python

Bạn từng khổ sở bỏ ra hàng giờ đồng hồ để đặt tên files, hoặc update hàng trăm dòng spreadsheet? Vậy thì, hãy để máy móc làm thay cho bạn!

Tài liệu Python hết sức thực tế này sẽ giúp bạn giải quyết gọn núi việc lẽ ra ngốn hàng tiếng đồng hồ chỉ trong vòng vài phút.

  • Dành cho newbie, không cần kinh nghiệm lập trình để bắt đầu.
  • Giúp bạn xây dựng những chương trình hết sức thực tiễn, có thể nhìn thấy thành quả ngay.

5. Dive into Python 3

Vẫn ở mức độ cơ bản, song so với những tài liệu Python kể trên, cuốn sách này kéo bạn lại gần hơn với lập trình thực sự. Bạn nên có chút ít kinh nghiệm lập trình (C hoặc Java) trước khi bắt đầu.

  • Sách có rất nhiều bài tập ví dụ cực kì chi tiết, rõ ràng.
  • Dùng Python 3 (rất khác biệt so với Python 2.7.x.)

6. Learn Python the Hard Way

ài liệu Python rất nổi tiếng này thực ra dành cho newbie có ít hơn 1 năm kinh nghiệm lập trình, dù tên sách nghe có vẻ… dọa dẫm. Sự “khó nhằn” của cuốn sách nằm ở công thức 3 bước “khô như ngói”:

Học từng bài tập ví dụ
Gõ lại từng bài tập ví dụ một cách tuyệt đối chính xác
Làm code trong bài tập ví dụ chạy
Một khi vượt qua được cửa ải này, bạn sẽ học được cách tự bơi một mình.

Tuy nhiên, sách dùng Python 2.7 và chưa có bản cập nhật cho Python 3.

Nếu định học theo tài liệu Python này, bạn nên chú ý, bởi code Python 2.7 của bạn có thể bị hàng đống lỗi khi chạy trên Python 3 interpreter.

7. Invent Your Own Computer Game with Python

Nhiều sách lập trình dành cho beginner chỉ đưa ra lý thuyết và các công cụ, mà quên hướng dẫn người đọc cách ứng dụng những kiến thức đó vào thực tế.

Cuốn sách nhỏ này, may thay, hoàn toàn ngược lại. Sách:

  • Hướng dẫn cách viết các game nhỏ, tương tác dòng lệnh rất thú vị, giống như các game trên nền DOS ngày xưa
  • Giải thích chi tiết, cặn kẽ, cực kì dễ hiểu và áp dụng ngay cả với học sinh 10-12 tuổi

8. Making Games with Python and Pygame

Là phần tiếp theo của cuốn trên.

Sách sẽ hướng dẫn bạn lập trình 11 game lớn hơn với đồ họa 2D.

Từ đó, bạn có thể tự viết game của mình, hoặc phát triển các ứng dụng khác.

SÁCH PYTHON NÂNG CAO

9. Learning Python 5th Edition

Rất dài, rất nhiều chữ, rất chuyên sâu. Cuốn sách này sẽ giúp bạn có nền tảng cực kì vững chắc về Python.

Dành cho developer đã có kinh nghiệm với một vài ngôn ngữ lập trình (dĩ nhiên bao gồm Python), đặc biệt là kinh nghiệm với lập trình hướng đối tượng.

Ưu điểm:

  • Sách cực kì chi tiết, bao quát hầu hết mọi khía cạnh của ngôn ngữ lập trình Python từ các khái niệm cơ bản đến kiến thức chuyên sâu.
  • Tìm hiểu Python trong sự đối sánh với các ngôn ngữ lập trình khác (như C hoặc C++)

Nhược điểm:

  • Dài hơn 1600 trang. Bạn nên chuẩn bị tâm lý “trường kì kháng chiến” để có thể “nhai” hết được tài liệu Python này.

10. Effective Python

Tài liệu Python dành cho trình độ trung cấp và nâng cao.

  • Sách chia ra làm nhiều phần nội dung, mỗi phần có thể hoàn thành xong trong vòng 10-30 phút. Ngoài ra, cuối mỗi phần đều có phần tóm tắt những điểm chính cần ghi nhớ.
  • Ví dụ minh họa đơn giản, dễ hiểu.
  • Các tips đưa ra đều rất hữu dụng.

11. Python Cookbook

Cuốn sách này giúp bạn hiểu ngôn ngữ lập trình Python sâu sắc từ gốc rễ.

Nhờ vậy, bạn có thể tối ưu hóa code của mình nhanh hơn, gọn gàng hơn, tốt hơn.

Sách được trình bày chặt chẽ, rõ ràng, rất thuận tiện để tra cứu.

12. Fluent Python

Đây là tài liệu Python đặc biệt dành cho các Python developer muốn thông thạo Python 3.

Nếu bạn đã rành rẽ Python 2, và muốn nâng cấp lên Python 3 hay thậm chí các phiên bản sau này nữa, cuốn sách này dành cho bạn.

13. Rtfm: Red Team Field Manual

Bạn là “hacker tập sự”? Vậy tài liệu Python này sẽ rất tiện dụng cho bạn, vì:

  • Chứa 90 trang các lệnh cho Windows, Linux, Nmap, SQLMAP, VPN, Putty, Powershell, Python và Google Hacking
  • Có khoảng 2000 cú pháp và hướng dẫn tương ứng từ cơ bản đến nâng cao
  • Giúp tiết kiệm thời gian tìm kiếm, ghi nhớ các lệnh

14. Black Hat Python: Python Programming for Hackers and Pentesters

Như đã giới thiệu ở trên, Python là ngôn ngữ lập trình được các hacker đặc biệt ưa chuộng. Và để ngăn chặn black hat hacker, cách tốt nhất là phải hiểu các mánh lới, kĩ thuật.v… của họ.

Tài liệu Python này xuất sắc trong việc phơi bày cách các hacker tạo ra Trojan, mở rộng phòng Suite Burp và Windows, cũng như cách họ thâm nhập vào một hệ thống, thao tác với gói dữ liệu và lây nhiễm cho máy ảo.

KHÓA HỌC PYTHON ONLINE

15. Real Python

Khóa học Python online này là lựa chọn tuyệt vời cho những ai muốn cùng lúc học ngôn ngữ lập trình và phát triển website bằng Python.

  • Khóa học bắt đầu với kiến thức cơ bản về ngôn ngữ lập trình Python (cả Python 2.7 và Python 3). Tiếp đó, bạn sẽ được học cách phát triển web với Django, Flask, and web2py. Đây là những web framework Python phổ biến nhất hiện nay.
  • Bạn cũng được hướng dẫn cách dùng các tools như Vagrant, Git, Heroku.v.v… để xây dựng các ứng dụng bằng Python.
  • Có thể đăng kí học 1 kèm 1.

16. Python Jumpstart by Buiding 10 Apps

Khóa học này dành cho những ai đã có chút ít kinh nghiệm lập trình và muốn nhanh chóng làm quen với Python thông qua các dự án thực tế như:

  • Xây dựng 1 trang xem dự báo thời tiết (HTTP clients, chụp màn hình/trích xuất dữ liệu, các gói cài đặt bên ngoài)
  • Tạo một trang phân tích giá bất động sản (xử lý định dạng files, thao tác trên danh sách, generators)
  • Tạo một ứng dụng ghi chú/nhật ký cá nhân (thao tác I/O với tập tin văn bản)

17. Code Academy: Learn Python

Khóa học dành cho newbie. Các bài học đơn giản, dễ hiểu, vui nhộn, có tính tương tác cao. Đặc biệt, bạn không cần tải phần mềm về, mà có thể code ngay trên trình duyệt đang sử dụng.

Tuy nhiên, nếu đã có từ 6-12 tháng kinh nghiệm lập trình, bạn có thể cảm thấy khóa học này hơi quá dễ.

Lưu ý: Các khóa học kiểu này là cách tuyệt vời để bạn học lập trình/viết code. Tuy nhiên, xây dựng hoàn chỉnh một ứng dụng hay viết phần mềm để giải quyết các vấn đề thực tế lại là câu chuyện hoàn toàn khác, đòi hỏi nhiều nỗ lực hơn rất nhiều.

18. Python Tutorial for Beginners: Learn Programming in 7 Days

Tutorial miễn phí trên trang Guru99 dành cho người mới bắt đầu. Bạn chỉ cần nhập địa chỉ email để đăng ký tham gia Tutorial gồm 23 phần này.

19. Python for Entrepreneurs

Khóa học lí tưởng cho những ai đã có kiến thức lập trình Python cơ bản, và muốn phát triển kĩ năng thông qua xây dựng một online business thực sự.

20. Intro to Python for Data Science

Nếu muốn theo đuổi sự nghiệp về data science (bao gồm machine learning, deep learning, computer vision, statistical analysis.v.v…), bạn nên thông thạo ngôn ngữ lập trình Python, cũng như NumPy và SciPy libraries.

Khóa học này là cách tuyệt vời để bạn làm quen với cả 3.

Hãy bình luận đầu tiên

Để lại một phản hồi

Thư điện tử của bạn sẽ không được hiện thị công khai.


*