Tóm tắt nội dung cuốn Fast Lane to Python

Cuốn Fast Lane Python là bản chỉnh lại của Quick Painless Tutorial to Python (tác giả Norman Matloff). Vì phiên bản mới này được áp dụng bản quyền Creative Commons License – No Derivatives (“xem thoải mái, không sửa đổi”) nên tôi chỉ dẫn bạn tới bản gốc tiếng Anh của tác giả. Các đường link này sẽ mở đến đúng trang PDF cần xem ngay trên trình duyệt web của bạn. Tuy nhiên trong từng trường hợp, có thể bạn sẽ không đến được trang mong muốn. Tôi mới chỉ thử dùng:

  • Google Chrome và Adobe Reader X trên Windows,
  • Firefox trên nền Linux, có cài thêm add-on tên là PDF Viewer

Chương 1: Giới thiệu

Ví dụ đầu tiên (thực hành 5 phút): tính giá trị hàm số g(x) = \frac{x}{1-x^2} tại các điểm giá trị x cách đều nhau. Giải thích lệnh print, danh sách và range, vòng for, while, break, continue.

Giải thích cách viết khối lệnh (thụt đầu dòng) trong Python; điểm đặc biệt của ngôn ngữ mà những người mới chuyển sang lập trình Python có thể mắc phải!

Chế độ dòng lệnh tương tác của Python: không cần phải gõ chữ print, bạn vẫn có thể xem được kết quả của phép tính. Thật là một chiếc máy tính tay tiện lợi!

Ví dụ thứ hai (thực hành trong 10 phút): một chương trình đếm chữ trong file text, giống như chương trình wc của UNIX. Lần này giới thiệu thêm ít nhiều về cấu trúc của chương trình “nghiêm chỉnh”: lệnh defimport. Ngoài ra còn có: tham số dòng lệnh, thao tác với file, các biến địa phương và toàn cục (global), cách gọi hàm và phương thức lập sẵn.

Các kiểu dữ liệu: chủ đề cơ bản trong lập trình: kiểu số intfloat, chuỗi string, và cách chuyển đổi qua lại. Cẩn thận đừng nhầm giữa số và chuỗi biểu diễn số!

Các dãy, quan trọng nhất là danh sách. Bộ (tuple), và quan trọng hơn là chuỗi (string). Dùng index, join, find, v.v. với chuỗi. Toán tử định dạng chuỗi (%)

Từ điển (dictionary), keys(), values(), pop(), in.

Hàm: khai báo và lưu ý về __name__. Phạm vi (scope) là rất quan trọng!

Ví dụ một chương trình trọn vẹn để tính điểm trung bình khóa học của sinh viên. Hãy cố gắng hiểu chương trình này và sửa đổi theo ý thích.

Lập trình hướng đối tượng. Ví dụ là một lớp đối tượng xử lý file chữ. Giải thích về constructordestructor, biến thực thể, biến lớp, phương thức thực thể, phương thức lớp, lớp suy diễn, liên tục có những so sánh với ngôn ngữ chính thống là C++/Java.

Coi chừng về cách tham chiếu đến đối tượng. Điều gì sẽ xảy ra nếu x là một danh sách và ta viết y=x ? Thế nào là đối tượng khả chuyển (mutable)?

Xóa đối tượng bằng del

So sánh đối tượng bằng phương thức cmp().

Module và những lưu ý khi dùng import, cách dùng reload. Việc biên dịch mã lệnh: bytecode. Biến toàn cục (global) với module. Che giấu dữ liệu bằng cách viết dấu gạch thấp trước tên biến.

Gói chương trình và file __init__.py

Xử lý biệt lệ với try ... except ...

Gọi hẳn tham số trong hàm bằng tên, khi cung cấp đối số

Nhập – xuất (I/O) chuẩn: nhập từ bàn phím bằng raw_input, nói thêm về lệnh  print.

Ví dụ nghiêm chỉnh: Tạo cấu trúc danh sách liên kết; cụ thể là lập một lớp biểu diễn cây nhị phân.

Cách viết lệnh tiện dụng, đặc trưng trong Python (idiom)

Decorator cho phương thức: cách viết mã lệnh đẹp mắt

Tham khảo dữ liệu trực tuyến: dir(), help(), pydoc

Chuyển các biến toàn cục vào trong một lớp class glb:

Xem mã lệnh trong Python Virtual Machine (module dis)

Chạy mã lệnh kiểu “tắt” (#!, đặc biệt với Linux)

Chương 2: Truy cập file và thư mục

File: readlines(), writelines()

Thư mục: module os,

Tìm kiếm file: findfile() với ví dụ cụ thể

Duyệt cây thư mục với walk() cùng chương trình minh họa

Tương thích giữa nhiều hệ điều hành: kí hiệu đường dẫn, file nhị phân.

Chương 3: Lập trình hàm

Hàm lambda—những hàm viết trên một dòng

Ánh xạ bằng map()

Lọc bằng filter()

Rút gọn bằng reduce()

Danh sách gộp (list comprehension)

Ví dụ với lớp xử lý file text: textclass

Ví dụ: phân tích dạng thừa số nguyên tố

Chương 4: Lập trình mạng

Tổng quan về mạng TCP/IP: mạng LAN, địa chỉ MAC. Địa chỉ IP, router, các cổng (port).

Về thông tin liên lạc giữa các máy: TCP và UDP khác nhau thế nào, và điều này ảnh hưởng gì đến chương trình?

Máy khách và máy chủ, cùng một ví dụ minh họa. Có hai script riêng dành cho máy chủ và máy khách. Phần máy chủ được phân tích ở đây và máy khách được phân tích ở đây.

Thao tác thực hiện bởi hệ điều hành qua các hàm: os.open(), socket.socket(), socket.bind(), socket.send()

Hàm sendall(), chỉ trả lại kết quả sau khi gửi xong toàn bộ chuỗi.

socket.makefile(), cách làm tương tự với file.readlines() nhưng lần này là đối với việc gửi thông tin. Có mã lệnh minh họa. Rất cần lưu ý về việc đóng kết nối, để đảm bảo cuối cùng toàn bộ dữ liệu được gửi đến nơi nhận.

Dữ liệu không đồng nhất: tình huống này xảy ra khi nơi nhận (thường là máy chủ) đồng thời tiếp nhận thông tin từ nhiều nguồn khác nhau, mà không biết rằng sau đoạn thông tin hiện thời thì tiếp theo sẽ phải nhận từ nguồn nào. Có hai giải pháp: một là dùng các mạch (thread), hai là dùng các nonblocking socket (tạm dịch: socket không cản trở lẫn nhau). Có mã lệnh chương trình cụ thể.

Một số câu lệnh liên quan đến lập trình Web.

Chương 5: Các module đảm nhiệm mạch chạy song song và đa xử lý

Mạch (thread) được xây dựng trên cơ sở thread của hệ điều hành. Có hai module đảm nhiệm, đó là threadthreading.

Module thread: ví dụ với máy khách-chủ, trong đó chỉ có mã lệnh máy chủ mới cần đến các thread (mỗi thread ứng với một máy khách).

Module threading: phức tạp hơn, thể hiện ở chương trình trên máy chủ. Các phương thức start(), run(), join(). Một ví dụ để đếm số nguyên tố.

Chương 6: Con trỏ và bộ sinh

Khái niệm về con trỏ (iterator) và vai trò của nó. Ví dụ áp dụng.

Coroutines: các đoạn chương trình chạy luân phiên (nhưng không phải cùng lúc).

Thư viện SimPy để mô phỏng các biến cố xảy ra có tính rời rạc.

Chương 7: Lập trình giao diện cửa sổ lệnh (curses)

Giới thiệu tính năng của curses: trong đó có khả năng điều khiển vị trí của con trỏ trên màn hình lệnh. Tại sao cần dùng curses?

Ví dụ giới thiệu tính năng của curses, và ví dụ ứng dụng thực sự. Một số ví dụ ngắn khác đã có sẵn trong bản mã nguồn của curses trong thư mục demo/curses.

Các tính năng khác của curses. Một số thư viện thiết lập trên nền curses. Giải quyết trục trặc khi chạy chương trình curses. Gỡ lỗi: dùng Winpdb thay vì những công cụ truyền thống như PDB và DDD.

Chương 8: Gỡ lỗi

Nguyên tắc gỡ lỗi.

Trình gỡ lỗi mặc định trong Python: PDB. Các macro trong PDB. Dùng PDB với Emacs.

Những chương trình khác: Winpdb, Eclipse, Xpdb, và PUDB.

Những đặc điểm sẵn có trong Python cũng giúp cho việc gỡ lỗi: str(), locals(), thuộc tính __dict__, id().

Để lại bình luận

Filed under Python, Sách

Gửi phản hồi

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s