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