Hàm trong Python: Cách định nghĩa, tham số và giá trị trả về

Tìm hiểu hàm trong Python từ cơ bản đến thực hành: cách dùng def, tham số, return, giá trị mặc định, phạm vi biến và module để viết code rõ ràng, tái sử dụng.

Hàm trong Python: Cách định nghĩa, tham số và giá trị trả về

Tìm hiểu hàm trong Python từ cơ bản đến thực hành: cách dùng def, tham số, return, giá trị mặc định, phạm vi biến và module để viết code rõ ràng, tái sử dụng. Hàm trong Python: Cách định nghĩa, tham số và giá trị trả về

Hàm là một trong những khái niệm quan trọng nhất khi học lập trình Python. Thay vì viết lặp lại cùng một đoạn mã, bạn có thể đóng gói logic vào hàm, đặt tên rõ ràng và gọi lại khi cần. Nhờ đó, chương trình dễ đọc, dễ kiểm thử và thuận tiện mở rộng.

Nếu bạn mới bắt đầu, hãy xem thêm bài học Python cơ bản đầu tiên trước khi tìm hiểu phần này.

Hàm trong Python là gì?

Hàm là một khối lệnh thực hiện một nhiệm vụ cụ thể. Python có nhiều hàm dựng sẵn như print(), len() và type(). Ngoài ra, bạn có thể tự định nghĩa hàm bằng từ khóa def.

Cách định nghĩa và gọi một hàm Python

def say_hello():
print("Xin chào, Python!")

say_hello()

Tên hàm nên mô tả đúng nhiệm vụ và thường dùng snake_case. Phần thân hàm phải được thụt lề thống nhất bằng bốn dấu cách.

Hàm có tham số

Tham số giúp hàm nhận dữ liệu từ bên ngoài:

def greet(name):
print(f"Xin chào {name}!")

greet("An")

Giá trị truyền vào khi gọi hàm được gọi là đối số. Một hàm có thể nhận nhiều tham số, nhưng nên giữ số lượng vừa phải để dễ sử dụng.

Tham số có giá trị mặc định

def greet(name, language="vi"):
if language == "en":
print(f"Hello {name}!")
else:
print(f"Xin chào {name}!")

Khám phá thêm
Học toán online
toán
Toán
greet("An")
greet("An", "en")

Tham số mặc định giúp lời gọi hàm ngắn gọn hơn. Khi cần truyền giá trị khác, bạn có thể ghi đè giá trị mặc định.

Giá trị trả về với return

Lệnh return đưa kết quả từ hàm ra bên ngoài. Nếu không có return, hàm mặc định trả về None.

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

result = add(3, 5)
print(result)

Phân biệt print và return: print chỉ hiển thị dữ liệu, còn return cho phép chương trình tiếp tục sử dụng kết quả để tính toán, lưu vào biến hoặc truyền sang hàm khác.

Trả về nhiều giá trị

def calculate(a, b):
return a + b, a - b

total, difference = calculate(10, 3)

Python đóng gói nhiều giá trị trả về thành một tuple để bạn có thể gán cho nhiều biến.

Phạm vi biến trong hàm

Biến tạo bên trong hàm thường là biến cục bộ và chỉ tồn tại trong phạm vi hàm. Biến khai báo bên ngoài là biến toàn cục. Bạn nên ưu tiên truyền dữ liệu qua tham số và return thay vì phụ thuộc quá nhiều vào biến toàn cục.

def calculate_total(price, quantity):
total = price * quantity
return total

Khám phá thêm
Soạn thảo văn bản
word
Học Khóa Học
print(calculate_total(120, 2))

Truyền tham số theo tên và số lượng linh hoạt

def profile(name, age):
return f"{name} - {age} tuổi"

print(profile(age=20, name="Lan"))

Python cũng hỗ trợ *args và **kwargs khi bạn cần nhận nhiều đối số:

def total(*numbers):
return sum(numbers)

def show_info(**info):
return info

Không nên dùng *args hoặc **kwargs nếu một danh sách tham số rõ ràng đã đủ đáp ứng yêu cầu.

Hàm lambda và khi nào nên dùng

square = lambda number: number * number
print(square(4))

Lambda phù hợp cho biểu thức ngắn dùng một lần. Với logic nhiều dòng, hãy dùng hàm def để code dễ đọc và dễ kiểm thử.

Docstring và chú thích cho hàm

def area_rectangle(width, height):
"""Tính diện tích hình chữ nhật."""
return width * height

Docstring giúp người khác hiểu mục đích, tham số và kết quả của hàm. Với dự án lớn, bạn nên ghi rõ kiểu dữ liệu và trường hợp lỗi có thể xảy ra.

Tách hàm vào module Python

Khi chương trình dài, hãy tách các hàm liên quan vào file riêng. Ví dụ tạo file math_tools.py:

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

Sau đó import trong file chính:

from math_tools import add


print(add(2, 4))

Cách tổ chức này giúp mã nguồn dễ tái sử dụng. Khi dự án lớn hơn, bạn có thể tìm hiểu package, __init__.py và cách quản lý dependency trong môi trường ảo.

Để ôn lại cách tạo môi trường độc lập trước khi cài module, hãy xem bài hướng dẫn venv và pip cho dự án Python.

Bài tập thực hành: chương trình tính tiền

Hãy viết hàm calculate_bill(price, quantity, discount=0) để tính tổng tiền sau giảm giá. Kiểm tra giá trị đầu vào, trả về kết quả và gọi hàm với nhiều bộ dữ liệu. Sau đó tách hàm vào module riêng và viết thêm vài trường hợp kiểm thử.

Câu hỏi thường gặp

Hàm Python bắt buộc phải có return không?

Không. Hàm có thể chỉ thực hiện một hành động như in thông báo. Khi cần lấy kết quả để xử lý tiếp, hãy dùng return.

Tham số và đối số khác nhau thế nào?

Tham số là tên biến trong phần định nghĩa hàm. Đối số là giá trị thực tế được truyền vào khi gọi hàm.

Nên dùng lambda hay def?

Dùng lambda cho biểu thức ngắn, đơn giản và dùng một lần. Dùng def khi hàm có nhiều bước, cần tài liệu hoặc được tái sử dụng.

Kết luận

Hiểu cách định nghĩa hàm, truyền tham số, dùng return và tách module là bước quan trọng để viết chương trình Python rõ ràng hơn. Hãy bắt đầu từ những hàm nhỏ, đặt tên dễ hiểu, kiểm tra dữ liệu đầu vào và luyện tập bằng các bài toán thực tế.

Từ khoá: ham trong python cach dinh nghia tham so va gia tri tra ve, hàm trong Python, def Python, tham số Python, return Python, học lập trình Python cơ bản, module Python

Từ khoá: ham trong python cach dinh nghia tham so va gia tri tra ve, hàm trong Python, def Python, tham số Python, return Python, học lập trình Python cơ bản, module Python

How To 60s

How To 60s

How To 60s - Tổng hợp Giáo án và đề thi THCS chương trình mới KNTT, CTST. Thủ thuật excel, word, powerpoint, windows. Mẹo vặt máy tính giúp công việc đơn giản hơn. Chia sẻ những kinh nghiệm, thủ thuật hay trong công việc và cuộc sống hàng ngày