Hàm (Function) trong Python

Đăng ngày: 17/08/2026 • Tác giả: Quản trị viên

Tài Liệu Hướng Dẫn: Hàm (Function) trong Python

Hàm (Function) là một khối mã lệnh được tổ chức, có thể tái sử dụng, dùng để thực hiện một tác vụ cụ thể. Việc sử dụng hàm giúp chương trình trở nên gọn gàng hơn, dễ đọc, dễ bảo trì và tránh việc lặp lại mã nguồn (DRY - Don't Repeat Yourself).

1. Cú pháp cơ bản

Để định nghĩa một hàm trong Python, ta dùng từ khóa def, theo sau là tên hàm và cặp ngoặc tròn ().

Python
 
def ten_ham(tham_so_1, tham_so_2):
    # Khối lệnh thực thi bên trong hàm
    # [Tùy chọn] Trả về kết quả
    return gia_tri_tra_ve
Lưu ý quan trọng:

  • Tên hàm tuân theo quy tắc đặt tên biến (bắt đầu bằng chữ cái hoặc dấu gạch dưới, không chứa khoảng trắng hay ký tự đặc biệt).
  • Khối lệnh bên trong hàm bắt buộc phải được thụt lề.

2. Các thành phần chính của hàm

A. Hàm không có tham số và không trả về giá trị

Dùng để thực hiện một công việc cố định mà không cần nhận dữ liệu đầu vào hay trả kết quả ra ngoài.

Python
 
def chao_hoi():
    print("Xin chào! Chào mừng bạn đến với Python.")


# Gọi hàm
chao_hoi()

B. Hàm có tham số (Parameters)

Nhận dữ liệu truyền vào từ bên ngoài để xử lý linh hoạt bên trong hàm.

Python
 
def tinh_tong(a, b):
    ket_qua = a + b
    print(f"Tổng là: {ket_qua}")


# Gọi hàm với đối số truyền vào
tinh_tong(5, 10)

C. Hàm có giá trị trả về (return)

Sử dụng từ khóa return để gửi kết quả xử lý của hàm ra bên ngoài. Sau khi gặp lệnh return, hàm sẽ kết thúc ngay lập tức.

Python
 
def nhan_hai_so(x, y):
    return x * y


# Lưu kết quả trả về vào biến để dùng tiếp
ket_qua_nhan = nhan_hai_so(4, 5)
print(ket_qua_nhan)  # Kết quả: 20

D. Tham số có giá trị mặc định (Default Arguments)

Bạn có thể gán giá trị mặc định cho tham số. Nếu khi gọi hàm người dùng không truyền giá trị đó, Python sẽ lấy giá trị mặc định.

Python
 
def xin_chao(ten, loi_chao="Xin chào"):
    print(f"{loi_chao}, {ten}!")


xin_chao("Nam")  # Kết quả: Xin chào, Nam!
xin_chao("Lan", "Hello")  # Kết quả: Hello, Lan!

3. Phạm vi của biến (Scope)

  • Biến cục bộ (Local Variable): Được khai báo bên trong hàm, chỉ có hiệu lực và sử dụng được bên trong hàm đó.
  • Biến toàn cục (Global Variable): Được khai báo bên ngoài hàm, có thể truy cập được ở mọi nơi trong chương trình.

4. Hệ thống bài tập áp dụng (Từ cơ bản đến nâng cao)

Mức độ cơ bản & Làm quen

  • Bài 1: Viết hàm nhận vào chiều dài và chiều rộng, sau đó tính và trả về diện tích, chu vi hình chữ nhật.
  • Bài 2: Viết hàm nhận vào một chuỗi ký tự bất kỳ và in ra độ dài của chuỗi đó (không dùng hàm len() trực tiếp bên ngoài, mà viết bên trong hàm).
  • Bài 3: Viết hàm nhận vào 3 số nguyên và trả về số lớn nhất trong 3 số đó.

Mức độ trung bình & Tư duy logic

  • Bài 4: Viết hàm kiểm tra xem một năm dương lịch n có phải là năm nhuận hay không (trả về True hoặc False).
  • Bài 5: Viết hàm nhận vào một số nguyên dương n và trả về giá trị giai thừa của số đó ($n!$).
  • Bài 6: Viết hàm nhận vào một danh sách các số nguyên, sau đó lọc và trả về một danh sách mới chỉ chứa các số chẵn.
  • Bài 7: Viết hàm kiểm tra một chuỗi ký tự có phải là chuỗi đối xứng (palindrome - đọc xuôi hay ngược đều giống nhau, ví dụ "radar", "level") hay không.

Mức độ nâng cao & Thực tế

  • Bài 8: Viết hàm sử dụng thuật toán đệ quy (recursion) để tính số Fibonacci thứ n.
  • Bài 9: Viết hàm giải phương trình bậc hai dạng tổng quát $ax^2 + bx + c = 0$ với các hệ số $a, b, c$ được truyền vào từ tham số của hàm.
  • Bài 10: Viết hàm nhận vào một đoạn văn bản (chuỗi), xử lý và trả về một từ điển (dictionary) thống kê số lần xuất hiện của từng từ trong đoạn văn bản đó.

Bài viết liên quan