1 | 10 KHÓA PYTHON CƠ BẢN HOWKTEAM.COM Bài 28: KIỂU DỮ LIỆU FUNCTION TRONG PYTHON - SƠ LƯỢNG VỀ HÀM Xem học website để ủng hộ Kteam: Kiểu liệu Function Python - Sơ lượng hàm Mọi vấn đề lỗi website làm ảnh hưởng đến bạn thắc mắc, mong muốn khóa học mới, nhằm hỗ trợ cải thiện Website Các bạn vui lòng phản hồi đến Fanpage How Kteam nhé! Dẫn nhập Trong trước, Kteam giới thiệu đến bạn VÒNG LẶP FOR TRONG PYTHON Và Kteam lại tìm hiểu với bạn Kiểu liệu Function Python - Sơ lượng hàm Nội dung Để đọc hiểu tốt bạn cần: Cài đặt sẵn MÔI TRƯỜNG PHÁT TRIỂN CỦA PYTHON Xem qua CÁCH CHẠY CHƯƠNG TRÌNH PYTHON Copyright © Howkteam.com | 10 KHÓA PYTHON CƠ BẢN HOWKTEAM.COM Nắm CÁCH GHI CHÚ BIẾN TRONG PYTHON CÁC KIỂU DỮ LIỆU ĐƯỢC GIỚI THIỆU TRONG PYTHON CÂU ĐIỀU KIỆN IF TRONG PYTHON VÒNG LẶP WHILE VÒNG LẶP FOR TRONG PYTHON NHẬP XUẤT TRONG PYTHON Bạn Kteam tìm hiểu nội dung sau Vấn đề Khai báo hàm (Create function) Gọi hàm (Call function) Đừng viết lại code! (DRY – Don’t Repeat Yourself) Parameter Argument Giá trị mặc định parameter (default argument) Vấn đề Bạn giới thiệu qua HÀM PRINT Vậy bạn có biết người ta tạo nên hàm khơng? Kteam nghĩ bạn khơng nên tìm hiểu làm vốn phức tạp! Vậy khơng có hàm print có phải lần bạn muốn in thứ Shell bạn phải viết dãy lệnh dài để làm điều chứ? Ta thử tính đơn giản thơi! Ví dụ: hàm print tốn 10 dịng để in chuỗi (thật nhiều nhiều), bạn dùng 10 lần print tới 100 dịng Mà với chương trình, liệu bạn có sử dụng hàm print? Nếu không nhờ kĩ sư viết sẵn cho nhiều hàm sử dụng liệu tốn dòng code cho script in dòng chữ “Hello Kteam!” Shell? Thời gần xưa, người ta viết dịng code viết từ viết xuống, lệnh làm trước viết trước hồn thành đoạn script Ta gọi, Lập trình tuyến tính (linear programming) Copyright © Howkteam.com | 10 KHĨA PYTHON CƠ BẢN HOWKTEAM.COM Và nhiều vấn đề phát sinh từ linear programming việc sửa đổi, cập nhật, khó khăn nhiều nguyên nhân khác đưa thời kì lập trình mới, Lập trình thủ tục (procedural programming) Để có chương trình theo hướng procedural programming, ta phải biết khái niệm hàm cụ thể này, Kteam giới thiệu với bạn Khai báo hàm (create function) Ở đây, Kteam sử dụng từ “khai báo”, với tựa có cụm từ “kiểu liệu” để muốn nói với bạn Python, hàm mà ta tạo biến đặc biệt mà ta khai báo Bạn nên nắm rõ điều để sau có bạn tiếp cận tới khái niệm meta class (siêu lớp) hiểu rõ Để khai báo hàm, ta sử dụng từ khóa “def” với cú pháp sau Cú pháp: def (parameter_1, parameter_2, , parameter_n): function-block Trong cú pháp đó, bạn khơng bỏ sót thứ ngoại trừ bạn bỏ trống parameter Ví dụ: >>> def kteam(): pass >>> kteam >>> type(kteam) Copyright © Howkteam.com KHÓA PYTHON CƠ BẢN HOWKTEAM.COM | 10 Lưu ý: Lệnh pass lệnh “giữ chỗ” (placeholder statement) để giúp cho block Python không bị thiếu câu lệnh trường hợp bạn chưa biết viết cho phù hợp Bạn thấy, in hàm kteam, bạn nhận dòng tương một generator expression Gọi hàm (call function) Việc gọi hàm, ta có cú pháp sau Cú pháp: () Khi gọi hàm, câu lệnh có hàm thực thi Ví dụ: >>> def kteam(): print('Hello Kteam!') >>> kteam >>> kteam() Hello Kteam! Ta gọi hàm kteam, nên hàm kteam thực thi lệnh mà có Cụ thể dùng hàm print in hình dịng chuỗi Copyright © Howkteam.com | 10 KHÓA PYTHON CƠ BẢN HOWKTEAM.COM Đừng viết lại code (DRY - Don’t Repeat Yourself) Giả sử, bạn có script với nhiệm vụ in dòng in “Hello Kteam!” “Free Education” print('Hello Kteam!') print("Free Education") print('Hello Kteam!') print("Free Education") print('Hello Kteam!') print("Free Education") print('Hello Kteam!') print("Free Education") Lưu ý: Việc sử dụng vòng lặp để làm chuyện khả thi, có nhiều trường hợp câu lệnh khơng nằm liền kề này, bạn khơng thể dùng vịng lặp rút gọn Bây giờ, bạn muốn thay đổi dòng “Hello Kteam!” thành “Hi Kteam!”, bạn phải chỉnh sửa lại dòng lệnh Giờ ta đưa vấn đề xa tí Nếu nhiệm vụ bạn khơng print tám dịng chữ mà cịn phải làm nhiều thứ khác, có phải bạn viết lại nhiều code không? Và chỉnh sửa mà chỉnh sửa nhiều bạn phải nhiều cơng sức Copyright © Howkteam.com | 10 KHĨA PYTHON CƠ BẢN HOWKTEAM.COM Để tránh việc đó, ta sử dụng hàm def kteam(): print('Hello Kteam!') print("Free Education") kteam() kteam() kteam() kteam() Và muốn chỉnh sửa, ta cần chỉnh sửa bên hàm, ta thay đổi tất Parameter Argument Đầu tiên, ta khởi tạo hàm có parameter >>> def kteam(text): … print(text) Và gọi hàm có parameter, bạn phải truyền vào argument tương ứng >>> kteam('Hello Kteam!') Hello Kteam! Ở đây, argument đưa vào chuỗi Chuỗi đưa vào gán cho parameter tương ứng text Và hàm thực việc in text Đương nhiên biến hóa nhiều >>> def kteam(greating, name): print(greating, name + '!') >>> kteam('Hi', 'Kteam') Hi Kteam! Copyright © Howkteam.com | 10 KHĨA PYTHON CƠ BẢN HOWKTEAM.COM >>> kteam('Hello', 'SpaceX') Hello SpaceX! Giá trị mặc định parameter (Default argument) Hãy coi ví dụ sau: >>> def kteam(greating, name): print(greating, name + '!') >>> kteam('Hi', 'Kteam') Hi Kteam! >>> kteam('Hello', 'SpaceX') Hello SpaceX! >>> kteam('Hi', 'Tesla') Hi Tesla! >>> kteam('Hi', 'Python') Hi Python! >>> kteam('Hi', 'Jack') Hi Jack! Ta thấy, tần suất xuất chuỗi “Hi” cho parameter greating cao Giờ ta cần parameter giữ giá trị chuỗi “Hi” cho ta thay đổi cần Bấy giờ, ta nên sử dụng default argument >>> def kteam(name, greating='Hi'): print(greating, name + '!') >>> kteam('Kteam') Hi Kteam! >>> kteam('SpaceX') Hi SpaceX! >>> kteam('SpaceX', 'Hello') Hello SpaceX! Copyright © Howkteam.com | 10 KHĨA PYTHON CƠ BẢN HOWKTEAM.COM Lưu ý: Khi bạn đưa default argument cho parameter, phải để parameter có default argument sau Default argument unhashable container Như bạn biết, unhashable container phổ biến mà ta biết LIST, DICT, SET Ở có cảnh báo cho bạn việc bạn sử dụng default argument cho parameter unhashable container giá trị khơng làm (refresh) sau lần gọi hàm mà khơng pass argument cho parameter Đương nhiên bạn có pass cho argument container khơng giá trị lần sau bạn gọi >>> def f(kteam=[]): kteam.append('F') print(kteam) >>> f() ['F'] >>> f() ['F', 'F'] >>> f() ['F', 'F', 'F'] >>> f([1, 2, 3]) [1, 2, 3, 'F'] >>> f() ['F', 'F', 'F', 'F'] Củng cố học Đáp án trước Bạn tìm thấy câu hỏi phần CÂU HỎI CỦNG CỐ VÒNG LẶP FOR TRONG PYTHON - Phần Copyright © Howkteam.com | 10 KHĨA PYTHON CƠ BẢN HOWKTEAM.COM >>> for l in lst: l[0] = None n = int(input('Enter size of matrix: ')) dx, dy = 1,0 x, y = 0,0 spiral_matrix = [[None] * n for j in range(n)] for i in range(n ** 2): spiral_matrix[x][y] = i nx, ny = x + dx, y + dy if > def kteam(): pass >>> kteam