kiến thức lập trình cơ bản
Hàm là gì trong lập trình? Bài viết dễ hiểu cho người mới bắt đầu
Bài viết giải thích hàm là gì, tại sao cần dùng, cách tạo và gọi hàm trong Python, bao gồm ví dụ thực tế, so sánh print và return, và các lỗi thường gặp cho người mới.
💡Điểm chính của bài viết
- Bài viết giải thích hàm là gì, tại sao cần dùng, cách tạo và gọi hàm trong Python, bao gồm ví dụ thực tế, so sánh print và return, và các lỗi thường gặp cho người mới.
Chủ đề: kiến thức lập trình cơ bản
Đối tượng: người mới tiếp cận lập trình
Mức độ: dễ hiểu, hạn chế thuật ngữ chuyên ngành
Ví dụ dùng: Python
Ảnh minh họa: ảnh JPEG từ internet, không nhúng base64, không dùng SVG

Nguồn ảnh: Wikimedia Commons — Colorful code (Unsplash).jpg.
Tác giả ảnh: Markus Spiske.
Giấy phép: CC0 1.0 Public Domain Dedication theo trang Wikimedia Commons.
Trang ảnh gốc: https://commons.wikimedia.org/wiki/File:Colorful_code_(Unsplash).jpg
Link ảnh hiển thị trực tiếp: https://upload.wikimedia.org/wikipedia/commons/thumb/9/94/Colorful_code_%28Unsplash%29.jpg/1280px-Colorful_code_%28Unsplash%29.jpg
1. Hàm là gì?
Trong lập trình, hàm có thể hiểu đơn giản là một nhóm việc được đặt tên.
Ví dụ đời thường: bạn pha trà mỗi ngày. Pha trà gồm nhiều bước:
Ví dụ
Thay vì lúc nào cũng nói lại đầy đủ các bước, ta đặt tên cho cả nhóm việc đó là:
Ví dụ
Sau này chỉ cần nói “pha_trà”, ta hiểu rằng bên trong có nhiều bước nhỏ.
Trong lập trình cũng vậy. Ta gom nhiều dòng lệnh lại, đặt tên cho nó, rồi khi cần thì gọi tên đó ra dùng.
2. Vì sao cần dùng hàm?
Hàm giúp code đỡ lặp lại, dễ đọc hơn và dễ sửa hơn.
Nếu không dùng hàm:
print("Xin chào, An!")
print("Chúc bạn một ngày tốt lành!")
print("Xin chào, Bình!")
print("Chúc bạn một ngày tốt lành!")
print("Xin chào, Chi!")
print("Chúc bạn một ngày tốt lành!")
Đoạn code trên vẫn chạy, nhưng bị lặp lại nhiều.
Nếu dùng hàm:
def chao(name):
print("Xin chào, " + name + "!")
print("Chúc bạn một ngày tốt lành!")
chao("An")
chao("Bình")
chao("Chi")
Ta chỉ viết phần chào một lần. Muốn chào ai thì gọi chao() và đưa tên người đó vào.
3. Tạo một hàm đơn giản
Trong Python, một hàm đơn giản có dạng:
def ten_ham():
viec_can_lam
Ví dụ:
def noi_xin_chao():
print("Xin chào!")
Giải thích:
deflà cách bắt đầu tạo hàm trong Python.noi_xin_chaolà tên hàm.- Dòng bên dưới là việc hàm sẽ làm.
- Phần việc bên trong hàm phải được thụt vào.
Nhưng tạo hàm chưa làm hàm chạy ngay. Muốn hàm chạy, ta phải gọi hàm:
def noi_xin_chao():
print("Xin chào!")
noi_xin_chao()
Kết quả:
Ví dụ
4. Gọi hàm là gì?
Gọi hàm nghĩa là yêu cầu hàm bắt đầu làm việc.
Ví dụ dễ hiểu: bạn có một nút tên là “bật đèn”. Khi chưa bấm, đèn chưa sáng. Khi bấm nút, đèn sáng.
def bat_den():
print("Đèn đã bật")
bat_den()
def bat_den() giống như tạo nút.
bat_den() giống như bấm nút.
Kết quả:
Ví dụ
5. Hàm có thể nhận thông tin đưa vào
Nhiều hàm cần nhận thông tin để làm việc.
Ví dụ: hàm chào một người theo tên.
def chao(name):
print("Xin chào, " + name + "!")
chao("An")
chao("Bình")
Kết quả:
Ví dụ
Ở đây, name là chỗ để nhận tên.
Khi gọi:
chao("An")
Python hiểu rằng name là "An".
Cách hiểu đời thường:
Ví dụ
6. Hàm có thể trả kết quả
Có hàm chỉ in chữ ra màn hình. Nhưng cũng có hàm tính xong rồi trả kết quả để ta dùng tiếp.
Ví dụ:
def tinh_tong(a, b):
return a + b
ket_qua = tinh_tong(3, 5)
print(ket_qua)
Kết quả:
Ví dụ
Giải thích:
anhận số3.bnhận số5.- Hàm tính
3 + 5. returntrả kết quả về.ket_quanhận giá trị8.
Cách hiểu đơn giản:
Ví dụ
7. print và return khác nhau thế nào?
Người mới rất dễ nhầm chỗ này.
print là hiển thị ra màn hình.
return là trả kết quả để chương trình dùng tiếp.
Ví dụ dùng print:
def tinh_tong(a, b):
print(a + b)
tinh_tong(3, 5)
Kết quả hiển thị:
Ví dụ
Ví dụ dùng return:
def tinh_tong(a, b):
return a + b
ket_qua = tinh_tong(3, 5)
print(ket_qua * 2)
Kết quả:
Ví dụ
Vì hàm trả về 8, ta có thể lấy kết quả đó dùng tiếp.
Cách nhớ:
print = cho người xem.
return = đưa kết quả cho chương trình dùng tiếp.
8. Ví dụ thực tế: tính tiền mua hàng
def tinh_tien(price, quantity):
return price * quantity
tong_tien = tinh_tien(25000, 3)
print(tong_tien)
Kết quả:
Ví dụ
Giải thích:
pricelà giá một món.quantitylà số lượng mua.- Hàm lấy giá nhân với số lượng.
- Kết quả là tổng tiền.
Nếu cần tính nhiều món khác nhau:
print(tinh_tien(10000, 5))
print(tinh_tien(45000, 2))
print(tinh_tien(120000, 1))
Không cần viết lại công thức nhiều lần.
9. Ví dụ thực tế: kiểm tra tuổi
def kiem_tra_tuoi(age):
if age >= 18:
return "Đủ tuổi"
else:
return "Chưa đủ tuổi"
print(kiem_tra_tuoi(20))
print(kiem_tra_tuoi(15))
Kết quả:
Ví dụ
Hàm này giống một người kiểm tra tuổi:
Ví dụ
10. Đặt tên hàm sao cho dễ hiểu
Tên hàm nên nói rõ việc hàm làm.
Không nên đặt tên khó hiểu:
def x(a, b):
return a + b
Nên đặt tên rõ hơn:
def tinh_tong(a, b):
return a + b
Một số tên hàm dễ hiểu:
chao_nguoi_dung()
tinh_tong()
kiem_tra_tuoi()
tinh_tien()
gui_email()
Người mới nên ưu tiên tên rõ nghĩa, không cần quá ngắn.
11. Khi nào nên tạo hàm?
Nên tạo hàm khi:
- bạn viết cùng một đoạn code nhiều lần;
- bạn muốn đặt tên cho một việc cụ thể;
- bạn muốn code dễ đọc hơn;
- bạn muốn sửa một chỗ thay vì sửa nhiều chỗ;
- bạn muốn chia việc lớn thành nhiều việc nhỏ.
Ví dụ, thay vì nghĩ:
Ví dụ
Hãy chia nhỏ:
Ví dụ
Mỗi việc nhỏ có thể trở thành một hàm.
12. Lỗi thường gặp của người mới
Lỗi 1: Tạo hàm nhưng quên gọi hàm
def noi_xin_chao():
print("Xin chào!")
Đoạn này chưa in gì cả. Cần gọi hàm:
noi_xin_chao()
Lỗi 2: Quên thụt lề
Sai:
def noi_xin_chao():
print("Xin chào!")
Đúng:
def noi_xin_chao():
print("Xin chào!")
Lỗi 3: Nhầm print với return
Nếu muốn dùng kết quả để tính tiếp, dùng return.
def tinh_tong(a, b):
return a + b
Nếu chỉ muốn hiển thị, dùng print.
def in_loi_chao():
print("Xin chào!")
Lỗi 4: Một hàm làm quá nhiều việc
Không nên để một hàm vừa tính tiền, vừa gửi email, vừa in hóa đơn, vừa lưu dữ liệu.
Nên chia thành nhiều hàm nhỏ:
tinh_tien()
tao_hoa_don()
gui_email()
luu_du_lieu()
Mỗi hàm làm một việc rõ ràng thì dễ hiểu hơn.
13. Cách đọc một hàm
Khi gặp một hàm, hãy hỏi:
- Hàm tên là gì?
- Hàm nhận gì vào?
- Hàm làm gì?
- Hàm có trả kết quả không?
Ví dụ:
def tinh_tong(a, b):
return a + b
Trả lời:
Ví dụ
14. Bài tập nhỏ
Bài 1
Viết hàm noi_xin_chao() để in ra:
Ví dụ
Bài 2
Viết hàm chao(name) để chào một người theo tên.
Ví dụ:
chao("An")
Kết quả:
Ví dụ
Bài 3
Viết hàm tinh_tong(a, b) trả về tổng của hai số.
Ví dụ:
print(tinh_tong(4, 6))
Kết quả:
Ví dụ
Bài 4
Viết hàm tinh_tien(price, quantity) trả về tổng tiền.
Ví dụ:
print(tinh_tien(20000, 3))
Kết quả:
Ví dụ
15. Đáp án tham khảo
Đáp án bài 1
def noi_xin_chao():
print("Xin chào!")
noi_xin_chao()
Đáp án bài 2
def chao(name):
print("Xin chào, " + name + "!")
chao("An")
Đáp án bài 3
def tinh_tong(a, b):
return a + b
print(tinh_tong(4, 6))
Đáp án bài 4
def tinh_tien(price, quantity):
return price * quantity
print(tinh_tien(20000, 3))
16. Ghi nhớ nhanh
Hàm là một nhóm lệnh được đặt tên.
Tạo hàm giống như chuẩn bị một việc để dùng lại.
Gọi hàm là yêu cầu hàm chạy.
Hàm có thể nhận thông tin đưa vào.
Hàm có thể trả kết quả bằng return.
print là hiển thị cho người xem. return là trả kết quả cho chương trình dùng tiếp.
Tên hàm nên rõ ràng, dễ hiểu.
17. Nên học gì tiếp theo?
Sau khi hiểu hàm, người mới có thể học tiếp:
- cách chia chương trình thành nhiều hàm nhỏ;
- cách đọc lỗi khi gọi hàm sai;
- cách dùng danh sách cùng với hàm;
- cách viết một chương trình nhỏ hoàn chỉnh.
Không cần học quá nhanh. Điều quan trọng là hiểu ý tưởng: hàm giúp gom một việc lại, đặt tên cho việc đó, rồi dùng lại khi cần.
Nguồn tham khảo
- Python Docs — Defining Functions: https://docs.python.org/3/tutorial/controlflow.html#defining-functions
- MDN Web Docs — JavaScript Functions: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Functions
- Harvard CS50’s Introduction to Programming with Python: https://cs50.harvard.edu/python/
- Wikimedia Commons — ảnh minh họa code: https://commons.wikimedia.org/wiki/File:Colorful_code_(Unsplash).jpg
Được biên soạn bởi PixelRouter Editorial Team
Chúng tôi cung cấp các bài viết chuyên sâu và chính xác về hạ tầng AI, bảo mật API, quản lý tài chính đám mây và tối ưu hóa hệ thống cho nhà phát triển.
Câu hỏi thường gặp
Hàm trong lập trình là gì?
Hàm là một nhóm các câu lệnh được đặt tên để có thể gọi lại nhiều lần, giúp giảm lặp mã, tăng khả năng đọc và bảo trì code.
Cách khai báo một hàm đơn giản trong Python?
Sử dụng từ khóa `def` theo cú pháp `def ten_ham():` rồi viết các câu lệnh cần thực hiện trong khối thụt vào dưới đó.
Sự khác nhau giữa `print` và `return` trong hàm là gì?
`print` chỉ hiển thị giá trị ra màn hình cho người dùng thấy, trong khi `return` trả về giá trị cho chương trình để có thể sử dụng tiếp trong các phép tính khác.
Khi nào nên tạo một hàm mới?
Khi bạn viết lại cùng một đoạn code nhiều lần, muốn đặt tên cho một công việc cụ thể, cần làm cho code dễ đọc, dễ sửa, hoặc muốn chia một công việc lớn thành các phần nhỏ hơn.
Cách gọi một hàm đã được khai báo là gì?
Sau khi định nghĩa hàm, chỉ cần ghi tên hàm kèm dấu ngoặc đơn (và truyền các đối số nếu hàm cần) như `ten_ham()` để thực thi hàm.