:quality(75)/lenh_def_trong_python_a0a523d9fc.png)
Lệnh def trong Python là gì? Một số trường hợp đặc biệt cần chú ý khi dùng lệnh def
Việc nắm vững lệnh def trong Python là điều cần thiết để trở thành một lập trình viên thành thạo. Hàm không chỉ giúp tổ chức code tốt hơn mà còn tăng tính tái sử dụng và dễ bảo trì. Bài viết này sẽ hướng dẫn bạn từ cú pháp cơ bản đến những kỹ thuật nâng cao với lệnh def.
Trong Python để tạo ra một hàm, chúng ta cần dùng đến từ khóa def. Vậy def là gì và nó hoạt động như thế nào trong ngôn ngữ lập trình này? Hãy cùng FPT Shop khám phá chi tiết lệnh def trong Python trong bài viết dưới đây.
Lệnh def trong Python là gì?
Trong Python, def là một từ khóa (keyword) được sử dụng để khai báo một hàm (function). Thông qua từ khóa này, lập trình viên có thể tạo ra một khối mã có thể gọi lại và tái sử dụng để thực hiện một nhiệm vụ cụ thể trong chương trình.

Hàm được định nghĩa bằng def được gọi là hàm do người dùng tự định nghĩa (user-defined functions), giúp phân biệt với các hàm tích hợp sẵn (built-in functions) mà Python đã cung cấp.
def ten_ham(tham_so1, tham_so2, ...):
# phần thân hàm
return gia_tri
Trong đó:
- def đánh dấu sự bắt đầu của khai báo hàm.
- Tiếp theo là tên hàm do người dùng đặt.
- Phần thân hàm gồm các câu lệnh thực hiện chức năng cụ thể, được viết thụt vào đầu dòng so với dòng khai báo def.
- Kết thúc khai báo dòng đầu bằng dấu hai chấm (:).
Lợi ích của việc dùng lệnh def trong Python
Chia nhỏ chương trình thành các phần riêng biệt, giúp dễ đọc, dễ hiểu, dễ bảo trì và kiểm soát lỗi.
- Tái sử dụng mã nguồn: Thay vì viết lặp lại nhiều đoạn mã tương tự, bạn chỉ cần gọi lại hàm đã định nghĩa.
- Tối ưu hóa cấu trúc chương trình: Giúp mã ngắn gọn, rõ ràng và chuyên nghiệp hơn.
- Hỗ trợ làm việc nhóm hiệu quả: Khi định nghĩa rõ ràng các hàm với input và output cụ thể, việc phân chia công việc giữa các thành viên trở nên dễ dàng và nhất quán hơn.
Một số trường hợp đặc biệt khi dùng lệnh def trong Python
Lệnh Def method và lệnh Def function
class Weight():
weight = 200
def to_pounds(self):
return 3.405 * self.weight
def to_pounds(kilos):
return 3.405 * kilos
w = Weight()
pounds = w.to_pounds()
kilos = 200
pounds = to_pounds(kilos)
Trong ví dụ trên, chúng ta thấy có hai khối mã được khai báo bằng từ khóa def, nhưng chúng có bản chất khác nhau:

Khối đầu tiên nằm bên trong lớp Weight và được gọi là phương thức (method) - cụ thể là to_pounds(). Đây là một hàm gắn liền với đối tượng của lớp.
Khối thứ hai nằm ngoài mọi lớp và được gọi là hàm thông thường (function) - đó là to_pounds(kilos).
Sự khác biệt khi gọi method và function
Phương thức phải được gọi thông qua một đối tượng cụ thể của lớp. Ví dụ: w.to_pounds() trong đó w là một thể hiện của lớp Weight.
Hàm thông thường thì có thể gọi trực tiếp bằng cách truyền giá trị vào: to_pounds(100).
Việc phân biệt rõ giữa phương thức và hàm giúp bạn sử dụng đúng cú pháp và hiểu rõ hơn về cách tổ chức mã trong Python.
Lệnh Def trong Def (Def inside Def)
def outer_function(F, P):
def inner_function(T):
return F + P + T
result = inner_function(3)
return result
print(outer_function(1, 2))
Trong ví dụ trên, bạn có thể thấy rằng bên trong hàm outer_function, chúng ta tiếp tục sử dụng từ khóa def để định nghĩa một hàm khác có tên là inner_function. Đây là một kỹ thuật thường gặp trong Python (và nhiều ngôn ngữ lập trình khác), được gọi là hàm lồng nhau (nested function) hay hàm bên trong hàm (def inside def).

Một điểm quan trọng cần lưu ý:
Hàm inner_function chỉ hoạt động bên trong outer_function, nghĩa là không thể gọi nó từ bên ngoài. Điều này có nghĩa là bạn không thể gọi inner_function từ bên ngoài outer_function. Nếu cố gắng thực hiện điều đó, chương trình sẽ báo lỗi: “NameError: name 'inner_function' is not defined”
Lệnh Higher Order Functions
Higher Order Functions (HOF) hay còn gọi là hàm bậc cao, là những hàm có thể nhận một hoặc nhiều hàm khác làm đối số. Nhờ đặc điểm này, chúng ta có thể xây dựng các hàm mới có tính linh hoạt cao, đồng thời tái sử dụng logic của các hàm đã có sẵn. Ví dụ như sau:
def shout(text):
return text.upper()
def whisper(text):
return text.lower()
def greet(func):
greeting = func("Xin chao, FPT Shop han hanh duoc phuc vu quy khach. ")
print(greeting)
# XIN CHAO, FPT SHOP HAN HANH DUOC PHUC VU QUY KHACH.
greet(shout)
# xin chao, fpt shop han hanh duoc phuc vu quy khach.
greet(whisper)

Trong ví dụ ở trên, hàm greet được thiết kế để nhận một tham số đầu vào là func – và func chính là một hàm khác được truyền vào. Nhờ đó, chúng ta có thể truyền vào các hàm như shout (dùng để chuyển toàn bộ chuỗi thành chữ in hoa) hoặc whisper (chuyển chuỗi thành chữ thường) và vẫn tận dụng được chức năng của những hàm đó thông qua greet.
Một số lỗi thường gặp khi dùng lệnh def trong Python
Khi làm quen với việc định nghĩa hàm bằng lệnh def, người mới học thường dễ mắc phải một số lỗi phổ biến. Dưới đây là các lỗi thường gặp và cách khắc phục:
Thiếu dấu hai chấm (:) sau dòng khai báo hàm
- Nguyên nhân: Quên đặt dấu : ở cuối dòng def, khiến Python không hiểu đó là phần bắt đầu của một khối hàm.
- Cách khắc phục: Luôn đảm bảo có dấu : sau dòng khai báo

Sai cú pháp khi khai báo tham số hoặc thiếu dấu phẩy giữa các tham số
- Nguyên nhân: Viết sai cách phân tách giữa các tham số, như quên dấu phẩy hoặc dùng ký tự không hợp lệ.
- Cách khắc phục: Kiểm tra kỹ cú pháp, đảm bảo các tham số được ngăn cách bằng dấu phẩy.
Gọi hàm trước khi hàm được định nghĩa
- Nguyên nhân: Đặt lời gọi hàm ở trước phần khai báo hàm trong mã nguồn. Vì Python đọc mã từ trên xuống dưới, nên chương trình sẽ không nhận biết được hàm nếu chưa được định nghĩa.
- Cách khắc phục: Đảm bảo rằng bạn khai báo hàm trước khi gọi đến nó.
Lời kết
Qua bài viết trên, hy vọng bạn đã nắm vững lệnh def trong Python là gì và cách sử dụng lệnh để định nghĩa các hàm theo nhu cầu. Việc áp dụng từ khóa def giúp bạn tổ chức mã nguồn tốt hơn, xử lý các bài toán phức tạp một cách gọn gàng và dễ bảo trì hơn. Chúc bạn tự tin hơn trong việc viết hàm và phát triển chương trình với Python một cách hiệu quả.
Bạn đang cần một chiếc máy tính lý tưởng để lập trình nhanh hơn, hiệu quả hơn? Ghé FPT Shop ngay hôm nay để khám phá loạt sản phẩm laptop và máy tính để bàn được thiết kế riêng cho dân lập trình. Từ các dòng máy cấu hình phổ thông đến những “cỗ máy” mạnh mẽ dành cho dự án lớn, FPT Shop luôn sẵn sàng đồng hành cùng bạn trên hành trình phát triển phần mềm mượt mà, ổn định.
Tham khảo ngay laptop lập trình nhiều ưu đãi tại đây:
Xem thêm
:quality(75)/estore-v2/img/fptshop-logo.png)