Tags: Công ty TNHH Tin Học Và Nhà Trường , Nhà Xuất Bản Đại Học Quốc Gia Hà Nội

Python Nâng Cao

$22.99

Đây là cuốn sách nâng cao, tiếp theo cuốn Python cơ bản đã được xuất bản cách đây 4 năm. Cuốn sách này đặc biệt dành cho các giáo viên và học sinh cấp THPT đang được học ngôn ngữ lập trình Python theo Chương trình GDPT 2018 mới của...

Đây là cuốn sách nâng cao, tiếp theo cuốn Python cơ bản đã được xuất bản cách đây 4 năm. Cuốn sách này đặc biệt dành cho các giáo viên và học sinh cấp THPT đang được học ngôn ngữ lập trình Python theo Chương trình GDPT 2018 mới của Bộ Giáo dục và Đào tạo. Sách cũng dành cho tất cả các đối tượng khác: sinh viên các trường đại học, cha mẹ học sinh, và thậm chí học sinh THCS đang quan tâm tìm hiểu sâu hơn về Python.

Python là ngôn ngữ lập trình khá đặc biệt, sau đây là một vài điểm quan trọng và nổi bật của Python để giải thích cho lý do vì sao Python lại là ngôn ngữ lập trình được lựa chọn để thay thế cho ngôn ngữ Pascal trong môn Tin học ở Việt Nam.

- Python là ngôn ngữ lập trình khá đơn giản về câu lệnh, dễ học, dễ hiểu, phù hợp cho lứa tuổi học sinh trong nhà trường.

- Python có môi trường tương tác (Python shell), trong đó người dùng có thể thực hiện trực tiếp từng lệnh trong môi trường tương tác này. Tính năng có thêm môi trường tương tác giúp việc học lập trình Python trở nên dễ dàng hơn hẳn các ngôn ngữ lập trình bậc cao khác. Tính năng này cũng giúp GV dễ dàng thực hiện giảng dạy Python trong môi trường giáo dục trên lớp.

- Python là chương trình thông dịch và có hệ thống bắt lỗi ngoại lệ rất phong phú, điều này cho phép người lập trình dễ dàng hơn trong công việc kiểm thử và bắt lỗi chương trình.

- Các quy tắc viết lệnh Python đơn giản và tương thích rất lớn với cách biểu diễn thuật toán bằng pseudocode của nhiều tác giả sách về khoa học máy tính. Có thể nói cách viết lệnh Python tự nó đã có tính thuật toán rất cao, điều này dẫn đến việc Python là ngôn ngữ lập trình bậc cao rất thích hợp để học thuật toán và khoa học máy tính.

- Một tính chất rất hay nữa của Python là Python là ngôn ngữ lập trình có mã nguồn mở và có rất nhiều thư viện công cụ bổ sung. Người học lập trình Python dễ dàng tiếp cận mã nguồn của Python, giúp việc học Python trở nên rất lý tưởng trong môi trường giáo dục và nghiên cứu.

Vì sao cần có cuốn sách này?

Học xong nội dung của cuốn sách Python cơ bản, mặc dù khối lượng kiến thức đã khá nhiều, nhưng thực chất chúng ta mới chỉ biết được ở mức rất sơ khai, bề mặt của Python. Đặc biệt với rất nhiều giáo viên, vì đã quá quen với các ngôn ngữ lập trình Pascal hay C, thì không thể nhận biết được các khác biệt cơ bản giữa Python và Pascal hay C. Có thể liệt kê một số vấn đề và câu hỏi mà những người mới chỉ biết Python ở mức cuốn sách Python cơ bản thường thắc mắc và có nhu cầu tìm hiểu sâu hơn:

  1. Vì sao khi thực hiện lệnh dir() hoặc type() để xem kiểu, thuộc tính và lệnh trên các kiểu dữ liệu chúng ta đều thấy từ "class". Ví dụ:

type(1)

<class 'int'>

Như vậy có phải tất cả các dữ liệu trong Python đều là "đối tượng" (object) hay không trong mô hình OOP. Cần hiểu thế nào về mô hình hướng đối tượng trong Python.

  1. Python phân loại các kiểu dữ liệu như thế nào?
  2. Nếu hàm trong Python cũng là đối tượng thì hàm sẽ thuộc lớp nào?
  3. Nếu trong Pascal hay C, biến được định nghĩa như một tên gắn với một địa chỉ cố định của bộ nhớ dùng để lưu trữ giá trị thì điều đó còn đúng không với Python?
  4. Giải thích thế nào về điều sau. Sau lệnh gán B = A, vì sao những thay đổi của A lại dẫn đến thay đổi của dãy B?

>>> A = [1,2,3]

>>> B = A

>>> A(10)

>>> A

[1, 2, 3, 10]

>>> B

[1, 2, 3, 10]

  1. Phân biệt sự khác biệt giữa 2 toán tử "==" và "is"?
  2. Cách truyền dữ liệu qua đối số vào trong hàm của Python như thế nào? Có liên quan gì đến cách truyền tham trị hay tham biến của Pascal hay C?
  3. Có cách nào tính được chính xác thời gian chạy của một chương trình trong Python?
  4. Có cách nào biết được các giới hạn hiển thị dữ liệu trong Python? Ví dụ số nguyên (int) lớn nhất trong Python là bao nhiêu? Phạm vi tính toán với số thực (float) là gì? Xâu ký tự (str) được hiển thị maximum bao nhiêu ký tự?
  5. Có cách nào để biết và thể hiện được các mã hóa của xâu ký tự Unicode trên máy tính, ví dụ mã hóa UTF-8?
  6. Có thể tự thiết lập được các kiểu dữ liệu bất biến (immutable) và khả biến (mutable) trên Python được không? Nếu có thì làm như thế nào?
  7. Cách tự thiết lập các cấu trúc dữ liệu cơ bản, ví dụ mảng nhiều chiều, ngăn xếp, hàng đợi, danh sách liên kết, đống (heap), cây và đồ thị, trên Python như thế nào?
  8. Làm thế nào để biết được độ phức tạp thời gian của các lệnh, thao tác cơ bản trên các cấu trúc dữ liệu cơ bản của Python?
  9. Hash là gì và vai trò của hash trong Python?
  10. Có thể tự thiết lập được các kiểu dữ liệu băm được (hashable) hoặc không băm được (unhashable) trong Python được không? Nếu được thì làm như thế nào?

Những vấn đề và câu hỏi như trên có thể còn nhiều nữa và tất cả các vấn đề trên đều được giải đáp trong cuốn sách mới Python nâng cao mà các bạn đang có trên tay.

Sau đây tóm tắt nội dung cuốn sách. Sách dày 354 trang, được chia làm 10 chương và có hơn 300 câu hỏi, bài tập kèm theo.

Chương 1. Các kiểu dữ liệu cơ bản của Python.

Chương 2. Hàm trong Python.

Chương 3. Đối tượng dữ liệu tuần tự.

Chương 4. Quản lý biến trong Python.

Chương 5. Xâu ký tự trong Python.

Chương 6. Đối tượng thời gian trong Python.

Chương 7. Thiết kế kiểu dữ liệu mới thông qua OOP.

Chương 8. Thiết lập một số cấu trúc dữ liệu cơ bản trong Python.

Chương 9. Hash trong Python.

Chương 10. Một số module quan trọng của Python.

Chương 1, Các kiểu dữ liệu cơ bản của Python, sẽ giới thiệu tóm tắt lại phần kiến thức của cuốn Python Cơ bản, đồng thời tóm tắt các kiểu dữ liệu cơ bản có trong Python. Ngay từ chương đầu tiên này, các bạn sẽ được biết rõ trong Python tất cả dữ liệu đều là đối tượng, hay nói cách khác Python là ngôn ngữ lập trình hướng đối tượng hoàn toàn. Cũng ngay từ chương này các bạn sẽ biết rằng trong Python 2 khái niệm "đối tượng" và "giá trị" là khác nhau. Giá trị chỉ là một thuộc tính của đối tượng. Nếu 2 đối tượng đồng nhất thì giá trị của chúng như nhau, nhưng ngược lại không đúng. Trong chương 1 sẽ mô tả sâu hơn về các kiểu dữ liệu cơ bản của Python bao gồm:

- NoneType.

- Số nguyên (int).

- Số thực (float).

- Logic (bool).

- Xâu ký tự (str).

- Vùng giá trị (range).

- Dãy hằng (tuple).

- Danh sách (list).

- Tập hợp (set).

- Tập hợp đóng băng (frozenset).

- Từ điển (dict).

Chương 2, Hàm trong Python, sẽ trình bày một số kiến thức nâng cao của khái niệm hàm trong Python. Trong chương này sẽ trình bày các kiến thức sâu hơn về hàm của Python mà chưa có trong cuốn Python cơ bản. Có thể nói chương này thực sự trình bày các kiến thức nâng cao của khái niệm hàm trong Python. Các vấn đề sau sẽ có trong chương 2.

- Phạm vi tác động của biến trong và ngoài hàm.

- Khái niệm biến global, local và nonlocal.

- Phân loại tham số và đối số của hàm.

- Khuôn dạng tổng quát khai báo hàm.

- Khái niệm decorator của hàm.

- Bao đóng của hàm.

Chương 3, Đối tượng dữ liệu tuần tự, sẽ trình bày về một kiểu, dạng dữ liệu rất quan trọng của Python: Kiểu dữ liệu tuần tự (iterable data). Kiểu dữ liệu thùng trong Python được gọi là tuần tự nếu nó hỗ trợ lệnh duyệt for và lệnh in. Đây có lẽ là dạng dữ liệu hay gặp nhất và quan trọng nhất của Python. Hầu hết tất cả các kiểu dữ liệu thùng của Python đều là dữ liệu tuần tự. Trong chương này sẽ trình bày:

- Định nghĩa và cách thiết lập mới kiểu dữ liệu tuần tự.

- Giới thiệu 2 kiểu dữ liệu con rất hay dùng của dữ liệu tuần tự là kiểu dữ liệu iterator (lặp tuần tự) và generator (hàm sinh).

- Một số tính chất chung của kiểu dữ liệu tuần tự.

- Một số hàm có sẵn quan trọng của Python trên lớp các dữ liệu tuần tự. Các hàm được mô tả bao gồm: map(), filter(), enumerate(), sorted(), zip().

Kết thúc chương nêu một số ứng dụng của dữ liệu tuần tự, quan trọng nhất là thuật toán Index Sorting.

Chương 4, Quản lý biến nhớ trong Python, sẽ là chương rất quan trọng và hấp dẫn vì trong chương này chúng ta sẽ được học một kiến thức lõi, trung tâm nhất của Python: học cách Python quan niệm về khái niệm biến và cách quản lý các biến này trong bộ nhớ. Phần kiến thức quan trọng nhất của chương này là vai trò của khái niệm namespace trong quản lý biến của Python và đây chính là sự khác biệt rất quan trọng giữa Python và một số ngôn ngữ lập trình bậc cao khác như Pascal, C. Cũng trong chương này sẽ trả lời chính xác câu hỏi về cách truyền dữ liệu thông qua đối số của hàm.

Các nội dung chính của chương này:

- Các thuộc tính của đối tượng trong Python.

- Vai trò quản lý biến và tên của namespace.

- Phân loại namespace của Python.

- Cách truyền dữ liệu thông qua đối số của hàm trong Python.

- Ý nghĩa lệnh copy() và deepcopy() trong Python.

Chương 5, Xâu ký tự trong Python, sẽ trình bày sâu hơn và nâng cao về đối tượng xâu ký tự của Python. Xâu trong Python là kiểu dữ liệu bất biến, bao gồm dãy các ký tự Unicode, hay đúng hơn là dãy các code point tương ứng với mã Unicode của các ký tự. Xâu có lẽ là kiểu dữ liệu có nhiều phương thức nhất. Các kiến thức sau sẽ được trình bày trong chương này.

- Giới thiệu nhanh bảng mã Unicode, các tính chất, phân loại và thư viện unicodedata chứa các hàm phân loại ký tự Unicode.

- Dãy thoát và cách thể hiện Raw Unicode trong Python.

- Mô tả chi tiết các phương thức làm việc chính với kiểu xâu ký tự Unicode.

- Các thao tác mã hóa (encode) một xâu ký tự thành dãy các bytes theo UTF-8 và ngược lại giải mã (decode) một dãy bytes theo UTF-8 về dãy gốc ban đầu.

- Các lệnh tạo khuôn xâu ký tự trong Python. Trong phần này sẽ trình bày chi tiết cả 3 cách tạo khuôn xâu: (i) tạo khuôn theo phương thức (); (ii) tạo khuôn theo dạng f-string; (iii) tạo khuôn theo mô hình cũ với ký hiệu %.

- Phần cuối là mô tả 2 kiểu dữ liệu dãy byte là kiểu bytes (bất biến) và bytearray (khả biến). Hai kiểu dữ liệu này thực chất là một cách viết khác của kiểu dữ liệu byteString hay b-string (b-xâu).

Chương 6, Đối tượng thời gian trong Python, sẽ giúp các bạn làm quen với các công cụ xử lý thời gian trong Python. Chương này sẽ trình bày 3 mô đun có sẵn trong Python là time, calendardatetime. Đặc biệt trong mô đun time có 2 hàm thường dùng để tính thời gian chạy chương trình là các hàm time()perf_counter().

Chương 7, Thiết kế kiểu dữ liệu mới thông qua OOP, sẽ là chương quan trọng nhất của cuốn sách. Trong chương này sẽ trình bày một cách có hệ thống các kiến thức lõi cơ bản liên quan đến lập trình hướng đối tượng trên Python. Chú ý rằng trong Python để mô tả các cấu trúc dữ liệu mới bắt buộc phải lập trình OOP, điều này là khác biệt lớn giữa Python với các ngôn ngữ lập trình quen thuộc như Pascal, C.

- Cách thiết lập các lớp dữ liệu trong Python.

- Mô hình cây các kiểu dữ liệu cơ bản có sẵn trong Python.

- Tính kế thừa của lớp con trong Python.

- Khái niệm toán tử chồng và cách thiết lập toán tử chồng trong Python.

- Mô hình tổng quan các lớp cơ sở trừu tượng trong Python.

- Cách thiết lập thuộc tính của đối tượng.

- Các cách thiết lập phương thức của đối tượng.

- Hàm super() và ý nghĩa của hàm này trong việc thiết kế thuộc tính của đối tượng.

- Cách thiết lập các đối tượng có thuộc tính không thay đổi được giá trị.

Chương 8, Thiết lập một số cấu trúc dữ liệu cơ bản trong Python, sẽ giới thiệu cách tổ chức các cấu trúc dữ liệu cơ bản trong Python. Các cấu trúc dữ liệu được mô tả bao gồm:

- Các cấu trúc tuyến tính: ngăn xếp, hàng đợi, danh sách liên kết.

- Hàng đợi ưu tiên.

- Cấu trúc cây.

- Đồ thị.

Ngoài ra trong chương này cũng trình bày 2 cấu trúc dữ liệu có sẵn của Python bao gồm deque – hàng đợi 2 phía và heapq – cấu trúc heap dựa trên dãy (list) của Python.

Chương 9, Hash trong Python, sẽ giới thiệu nhanh khái niệm hash (kỹ thuật băm) và các ứng dụng của nó trong Python. Nội dung chương này bao gồm các kiến thức sau:

- Giới thiệu nhanh ý nghĩa của kỹ thuật băm, hàm băm và bảng băm của bài toán tìm kiếm thông tin.

- Tính chất của hàm hash() trong Python.

- Phân biệt đối tượng băm được (hashable) và không băm được (unhashable) trong Python.

- Cách thiết lập hash với các đối tượng mới.

- Quan hệ giữa hàm hàm __hash__() và __eq__() với các đối tượng mới.

- Cách thiết lập đối tượng dữ liệu bất biến và khả biến trong Python.

- Quan hệ giữa khái niệm bất biến / khả biến với khái niệm hash trong Python.

- Giới thiệu tính năng quan trọng của kiểu dữ liệu set và dict liên quan đến kỹ thuật băm trong Python.

Phần cuối chương có một vài ví dụ minh họa ứng dụng của kỹ thuật băm trong việc thiết kế các thuật toán với thời gian tối ưu nếu sử dụng tập hợp và từ điển trong Python.

Chương 10, Một số module quan trọng của Python, sẽ giới thiệu nhanh một số mô đun quan trọng và các tham số, tính năng, hàm chính của các mô đun này. Các mô đun được giới thiệu trong chương này bao gồm:

- math, mô đun chứa một số hàm và hằng toán học thường dùng.

- random, mô đun chứa các hàm sinh ngẫu nhiên rất hay dùng trên thực tế, đặc biệt là dùng để sinh các bộ dữ liệu test của chương trình.

- sys, mô đun chứa các thông số hệ thống của môi trường lập trình Python.

- os, mô đun chứa một số hàm làm việc với môi trường hệ điều hành máy tính mà Python đang cài đặt trên đó.

- decimal, mô đun dùng để thiết lập môi trường Decimal Context, tính toán chính xác với số thực dấu phẩy tĩnh hoặc dấu phẩy động.

Chú ý:

- Trong sách này chúng tôi chỉ tập trung vào phần kiến thức lõi của Python, tập trung vào các kiến thức hệ thống của Python lõi chứ không trình bày các ứng dụng ngoài của Python.

- Đi kèm Python lõi còn có khá nhiều các thư viện và công cụ khác nhưng do giới hạn của sách và phạm vị đối tượng của sách là giáo viên, học sinh và sinh viên nên không thể trình bày hết được các mô đun hay khác của Python như json, cvs, re, turtle, statistic, fractions, graphlib, tkinter, functools,

Chúng tôi hy vọng cuốn sách này sẽ có ích cho tất cả giáo viên, học sinh, sinh viên đang học lập trình Python và muốn mở rộng kiến thức của mình, học sâu hơn và nâng cao hơn các kiến thức lõi, kiến thức cơ bản của ngôn ngữ lập trình Python, một môi trường lập trình mở đang rất phát triển hiện nay.

Giá sản phẩm trên Tiki đã bao gồm thuế theo luật hiện hành. Bên cạnh đó, tuỳ vào loại sản phẩm, hình thức và địa chỉ giao hàng mà có thể phát sinh thêm chi phí khác như phí vận chuyển, phụ phí hàng cồng kềnh, thuế nhập khẩu (đối với đơn hàng giao từ nước ngoài có giá trị trên 1 triệu đồng).....

Recently Viewed Products