Python bài 12: Khai báo và sử dụng hàm trong Python

Hướng Dẫn Viết Chương Trình "Hello World" Đầu Tiên Với Python

🔹 1. Hàm là gì?

Hàm Python là một khối mã có tổ chức, có thể tái sử dụng được dùng để thực hiện một hành động liên quan duy nhất. Các hàm cung cấp tính mô-đun tốt hơn cho ứng dụng của bạn và mức độ tái sử dụng mã cao.

Một cách tiếp cận từ trên xuống để xây dựng logic xử lý bao gồm việc xác định các khối hàm có thể tái sử dụng độc lập. Một hàm Python có thể được gọi từ bất kỳ hàm nào khác bằng cách truyền dữ liệu bắt buộc (được gọi là tham số hoặc đối số). Hàm được gọi sẽ trả kết quả của nó trở lại môi trường gọi.

Dưới đây là bảng phân loại hàm trong Python đã được dịch sang tiếng Việt và trình bày rõ ràng:

STTLoại hàmMô tả
1Hàm tích hợp sẵn (Built-in functions)Đây là các hàm có sẵn trong thư viện chuẩn của Python như print(), int(), len(), sum(), v.v… Những hàm này luôn sẵn sàng sử dụng vì được nạp vào bộ nhớ ngay khi Python khởi động.
2Hàm trong các mô-đun tích hợp (Functions defined in built-in modules)Thư viện chuẩn của Python bao gồm nhiều mô-đun. Mỗi mô-đun định nghĩa một nhóm hàm. Các hàm này không được nạp sẵn, bạn cần phải import mô-đun tương ứng để sử dụng.
3Hàm do người dùng định nghĩa (User-defined functions)Ngoài các hàm tích hợp sẵn và hàm trong mô-đun, bạn cũng có thể tự định nghĩa hàm theo nhu cầu của mình. Đây là những hàm do người dùng tạo ra để phục vụ mục đích riêng.

🔹 2. Cú pháp định nghĩa hàm

def tên_hàm(tham_số):
    # khối lệnh
    return giá_trị

✔️ Giải thích:

  • def: từ khóa dùng để khai báo hàm
  • tên_hàm: bạn tự đặt, nên rõ nghĩa
  • tham_số (parameters): giá trị truyền vào hàm
  • return: (tùy chọn) trả kết quả về nơi gọi hàm

🔹 3. Ví dụ cơ bản

def chao():
    print("Xin chào bạn!")

chao()  # Gọi hàm

✅ Kết quả:

Xin chào bạn!

🔹 4. Hàm có tham số

def chao_ten(ten):
    print(f"Xin chào, {ten}!")

chao_ten("An")

✅ Kết quả:

Xin chào, An!

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

def tong(a, b):
    return a + b

ket_qua = tong(5, 3)
print("Tổng là:", ket_qua)

✅ Kết quả:

Tổng là: 8

🔹 6. Tham số mặc định

def chao(ten="bạn"):
    print(f"Xin chào, {ten}!")

chao()         # Xin chào, bạn!
chao("Mai")    # Xin chào, Mai!

🔹 7. Truyền nhiều giá trị – *args

def tinh_tong(*args):
    return sum(args)

print(tinh_tong(1, 2, 3, 4))  # Tổng: 10

*args cho phép truyền số lượng tham số không giới hạn

🔹 8. Truyền nhiều cặp key-value – **kwargs

def hien_thi_thong_tin(**kwargs):
    for key, value in kwargs.items():
        print(f"{key}: {value}")

hien_thi_thong_tin(ten="An", tuoi=20, lop="12A")

**kwargs dùng để truyền nhiều cặp key-value

🔹 9. Biến cục bộ và biến toàn cục

x = 10  # biến toàn cục

def ham():
    x = 5  # biến cục bộ
    print("Trong hàm:", x)

ham()
print("Ngoài hàm:", x)

✅ Kết quả:

Trong hàm: 5
Ngoài hàm: 10

🔹 10. Hàm gọi trong hàm

def binh_phuong(x):
    return x * x

def tinh_tong_binh_phuong(a, b):
    return binh_phuong(a) + binh_phuong(b)

print(tinh_tong_binh_phuong(2, 3))  # Kết quả: 13

🔁 Truyền tham trị và truyền tham chiếu trong Python

Trong một số ngôn ngữ lập trình như CC++, có hai cách chính để truyền biến vào hàm:

Thuật ngữ tiếng AnhDịch tiếng ViệtMô tả
Call by ValueTruyền tham trịKhi biến được truyền vào hàm, giá trị của biến thực (actual argument) sẽ được sao chép vào tham số (formal argument). Bất kỳ thay đổi nào trong tham số không ảnh hưởng đến biến gốc bên ngoài hàm.
Call by ReferenceTruyền tham chiếuKhi biến được truyền vào hàm, một tham chiếu (địa chỉ) đến vùng nhớ của biến thực được truyền vào. Tức là tham số và biến thực cùng trỏ tới một vùng nhớ, do đó thay đổi giá trị trong hàm sẽ làm thay đổi giá trị bên ngoài.

Python không hoàn toàn là truyền tham trị hay tham chiếu – mà là:

Truyền đối tượng theo tham chiếu (object reference)
🎯 Nếu đối tượng có thể thay đổi (mutable) → thay đổi sẽ ảnh hưởng ra ngoài.
🛡️ Nếu đối tượng không thay đổi được (immutable) → thay đổi không ảnh hưởng ra ngoài.

📌 Tóm tắt:

Kiểu dữ liệuCó thay đổi được không?Thay đổi trong hàm ảnh hưởng ra ngoài?
int, float, str, tuple❌ Không thay đổi được (immutable)❌ Không
list, dict, set✅ Có thể thay đổi (mutable)✅ Có

🧩 Tổng kết kiến thức về hàm

Nội dungMô tả
defKhai báo hàm
returnTrả giá trị về
*argsNhận nhiều tham số không tên
**kwargsNhận nhiều cặp key-value
Tham số mặc địnhCó giá trị khi không truyền vào
Biến cục bộ / toàn cụcPhạm vi của biến trong và ngoài hàm

🔹 Các bài tập về hàm

Bài 1: Viết hàm tính diện tích hình chữ nhật

Viết hàm dien_tich_chu_nhat(dai, rong) trả về diện tích hình chữ nhật.

def dien_tich_chu_nhat(dai, rong):
    return dai * rong

print("Diện tích:", dien_tich_chu_nhat(5, 3))

Bài 2: Viết hàm kiểm tra số nguyên tố

Hàm la_so_nguyen_to(n) kiểm tra xem số n có phải số nguyên tố không.

def la_so_nguyen_to(n):
    if n < 2:
        return False
    for i in range(2, int(n ** 0.5) + 1):
        if n % i == 0:
            return False
        return True

print(la_so_nguyen_to(7))   # True
print(la_so_nguyen_to(10))  # False

Bài 3: Viết hàm tính giai thừa

Hàm giai_thua(n) trả về giai thừa của số n.

def giai_thua(n):
    if n == 0 or n == 1:
        return 1
    return n * giai_thua(n - 1)

print(giai_thua(5))  # 120

Bài 4: Viết hàm kiểm tra số chẵn hay lẻ

Hàm chan_le(n) in ra "Chẵn" hoặc "Lẻ".

def chan_le(n):
    if n % 2 == 0:
        print("Chẵn")
    else:
        print("Lẻ")

chan_le(10)  # Chẵn
chan_le(7)   # Lẻ

Bài 5: Viết hàm tính tổng các số chia hết cho 3 từ 1 đến n

def tong_chia_het_cho_3(n):
    tong = 0
    for i in range(1, n + 1):
       if i % 3 == 0:
            tong += i
    return tong

print(tong_chia_het_cho_3(10))  # 3 + 6 + 9 = 18

Total
0
Shares
Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Previous Post

Python bài 13: Python Modules

Next Post
Hướng Dẫn Viết Chương Trình "Hello World" Đầu Tiên Với Python

Python bài 11: Kiểu dữ liệu tập hợp – Collection trong Python

Related Posts