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.

Xuất bản: 8 thg 6, 2026Cập nhật: 8 thg 6, 2026Thời gian đọc: 5 minLượt xem: 2
hàmPythonlập trình cơ bảncú pháp defprint vs return

💡Đ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

Ảnh minh họa code lập trình
Ảnh minh họa code lập trình

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ụ

Lấy ly. Cho trà vào ly. Đổ nước nóng. Chờ vài phút. Uống trà.

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ụ

pha_trà

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:

PYTHON
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:

PYTHON
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:

PYTHON
def ten_ham():
    viec_can_lam

Ví dụ:

PYTHON
def noi_xin_chao():
    print("Xin chào!")

Giải thích:

  • def là cách bắt đầu tạo hàm trong Python.
  • noi_xin_chao là 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:

PYTHON
def noi_xin_chao():
    print("Xin chào!")

noi_xin_chao()

Kết quả:

Ví dụ

Xin chào!

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.

PYTHON
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ụ

Đèn đã bật

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.

PYTHON
def chao(name):
    print("Xin chào, " + name + "!")

chao("An")
chao("Bình")

Kết quả:

Ví dụ

Xin chào, An! Xin chào, Bình!

Ở đây, name là chỗ để nhận tên.

Khi gọi:

PYTHON
chao("An")

Python hiểu rằng name"An".

Cách hiểu đời thường:

Ví dụ

Hàm chao giống như mẫu câu. Bạn đưa tên vào. Hàm ghép tên vào câu chào.

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ụ:

PYTHON
def tinh_tong(a, b):
    return a + b

ket_qua = tinh_tong(3, 5)

print(ket_qua)

Kết quả:

Ví dụ

8

Giải thích:

  • a nhận số 3.
  • b nhận số 5.
  • Hàm tính 3 + 5.
  • return trả kết quả về.
  • ket_qua nhận giá trị 8.

Cách hiểu đơn giản:

Ví dụ

Bạn đưa 3 và 5 vào. Hàm cộng hai số. Hàm trả ra 8.

7. printreturn khác nhau thế nào?

Người mới rất dễ nhầm chỗ này.

printhiển thị ra màn hình.

returntrả kết quả để chương trình dùng tiếp.

Ví dụ dùng print:

PYTHON
def tinh_tong(a, b):
    print(a + b)

tinh_tong(3, 5)

Kết quả hiển thị:

Ví dụ

8

Ví dụ dùng return:

PYTHON
def tinh_tong(a, b):
    return a + b

ket_qua = tinh_tong(3, 5)
print(ket_qua * 2)

Kết quả:

Ví dụ

16

Vì hàm trả về 8, ta có thể lấy kết quả đó dùng tiếp.

Cách nhớ:

TEXT
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

PYTHON
def tinh_tien(price, quantity):
    return price * quantity

tong_tien = tinh_tien(25000, 3)

print(tong_tien)

Kết quả:

Ví dụ

75000

Giải thích:

  • price là giá một món.
  • quantity là 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:

PYTHON
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

PYTHON
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ụ

Đủ tuổi Chưa đủ tuổi

Hàm này giống một người kiểm tra tuổi:

Ví dụ

Đưa tuổi vào. Nếu từ 18 trở lên thì trả về "Đủ tuổi". Nếu nhỏ hơn 18 thì trả về "Chưa đủ tuổi".

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:

PYTHON
def x(a, b):
    return a + b

Nên đặt tên rõ hơn:

PYTHON
def tinh_tong(a, b):
    return a + b

Một số tên hàm dễ hiểu:

PYTHON
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ụ

Viết chương trình bán hàng.

Hãy chia nhỏ:

Ví dụ

Tính tiền. Tính giảm giá. In hóa đơn. Kiểm tra số lượng hàng. Lưu thông tin khách hàng.

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

PYTHON
def noi_xin_chao():
    print("Xin chào!")

Đoạn này chưa in gì cả. Cần gọi hàm:

PYTHON
noi_xin_chao()

Lỗi 2: Quên thụt lề

Sai:

PYTHON
def noi_xin_chao():
print("Xin chào!")

Đúng:

PYTHON
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.

PYTHON
def tinh_tong(a, b):
    return a + b

Nếu chỉ muốn hiển thị, dùng print.

PYTHON
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ỏ:

PYTHON
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:

  1. Hàm tên là gì?
  2. Hàm nhận gì vào?
  3. Hàm làm gì?
  4. Hàm có trả kết quả không?

Ví dụ:

PYTHON
def tinh_tong(a, b):
    return a + b

Trả lời:

Ví dụ

Tên hàm: tinh_tong Nhận vào: a và b Việc làm: cộng a với b Trả kết quả: có, trả về a + b

14. Bài tập nhỏ

Bài 1

Viết hàm noi_xin_chao() để in ra:

Ví dụ

Xin chào!

Bài 2

Viết hàm chao(name) để chào một người theo tên.

Ví dụ:

PYTHON
chao("An")

Kết quả:

Ví dụ

Xin chào, An!

Bài 3

Viết hàm tinh_tong(a, b) trả về tổng của hai số.

Ví dụ:

PYTHON
print(tinh_tong(4, 6))

Kết quả:

Ví dụ

10

Bài 4

Viết hàm tinh_tien(price, quantity) trả về tổng tiền.

Ví dụ:

PYTHON
print(tinh_tien(20000, 3))

Kết quả:

Ví dụ

60000

15. Đáp án tham khảo

Đáp án bài 1

PYTHON
def noi_xin_chao():
    print("Xin chào!")

noi_xin_chao()

Đáp án bài 2

PYTHON
def chao(name):
    print("Xin chào, " + name + "!")

chao("An")

Đáp án bài 3

PYTHON
def tinh_tong(a, b):
    return a + b

print(tinh_tong(4, 6))

Đáp án bài 4

PYTHON
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

  1. Python Docs — Defining Functions: https://docs.python.org/3/tutorial/controlflow.html#defining-functions
  2. MDN Web Docs — JavaScript Functions: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Functions
  3. Harvard CS50’s Introduction to Programming with Python: https://cs50.harvard.edu/python/
  4. Wikimedia Commons — ảnh minh họa code: https://commons.wikimedia.org/wiki/File:Colorful_code_(Unsplash).jpg
PR

Đượ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.