Trong thế giới lập trình, có một nguyên tắc vàng mà mọi lập trình viên đều phải tuân thủ: không lặp lại chính mình (Don’t Repeat Yourself – DRY). Thay vì viết đi viết lại cùng một đoạn mã nhiều lần, ta cần chia nhỏ chương trình thành các khối logic độc lập, dễ tái sử dụng. Những khối đó chính là hàm (functions).
Python, một ngôn ngữ nổi tiếng với triết lý đơn giản và dễ đọc, xem function như “viên gạch nền tảng” để xây dựng phần mềm. Từ những chương trình nhỏ chỉ vài dòng code, đến những ứng dụng phức tạp hàng nghìn dòng, functions luôn hiện diện để giúp code trở nên rõ ràng, gọn gàng và dễ quản lý.
Trong bài viết này, chúng ta sẽ đi từ khái niệm cơ bản đến cách định nghĩa và sử dụng function trong Python, bao gồm: cú pháp, tham số, giá trị trả về, phạm vi biến… Bài viết này sẽ đặt nền móng vững chắc để bạn có thể tiến tới những kỹ thuật nâng cao trong phần tiếp theo.
1. Function trong Python là gì?
Function là một khối lệnh có tên, được định nghĩa để thực hiện một nhiệm vụ cụ thể. Khi cần, ta chỉ cần gọi tên function đó thay vì viết lại toàn bộ đoạn mã.
1.1. Lợi ích của function
- Tái sử dụng code: viết một lần, dùng nhiều nơi.
- Giảm trùng lặp: tránh copy–paste logic giống nhau.
- Dễ bảo trì: sửa logic trong function → mọi nơi gọi hàm đều được cập nhật.
- Chia nhỏ vấn đề: giúp chương trình lớn trở nên dễ quản lý hơn.
1.2. Ví dụ so sánh
Không dùng function:
# In ra tổng của 3 cặp số
a, b = 5, 7
print(a + b)
x, y = 10, 15
print(x + y)
m, n = 100, 250
print(m + n)
Dùng function:
def sum_two_numbers(a, b):
"""Return the sum of two numbers"""
return a + b
print(sum_two_numbers(5, 7)) # Output: 12
Rõ ràng, code có function ngắn gọn, dễ đọc và dễ mở rộng hơn rất nhiều.
2. Cú pháp định nghĩa function trong Python
Trong Python, một function được định nghĩa bằng từ khóa def
:
def function_name(parameters):
"""Docstring describing the function"""
# Function body
return value
function_name
: tên hàm (thường viết chữ thường, dùng dấu gạch dưới_
nếu nhiều từ).parameters
: danh sách tham số truyền vào (có thể có hoặc không).return
: giá trị trả về (có thể có hoặc không).- docstring: chuỗi mô tả ngắn gọn công dụng của hàm.
Ví dụ cơ bản
def greet(name):
"""Return a greeting message"""
return f"Hello, {name}!"
print(greet("KienThucMo")) # Output: Hello, KienThucMo!
3. Các loại function trong Python
3.1. Built-in Functions
Python có hơn 60 hàm tích hợp sẵn. Một số phổ biến:
print()
– in dữ liệu ra màn hình.len()
– lấy độ dài của chuỗi, list, tuple…type()
– kiểm tra kiểu dữ liệu.sum()
– tính tổng các phần tử iterable.range()
– tạo dãy số.
Ví dụ:
numbers = [1, 2, 3, 4]
print(len(numbers)) # 4
print(sum(numbers)) # 10
print(type(numbers)) # <class 'list'>
3.2. User-defined Functions
Lập trình viên có thể tự định nghĩa function để xử lý logic riêng.
def square(x):
"""Return the square of a number"""
return x * x
print(square(5)) # 25
4. Parameters và Arguments
Python hỗ trợ nhiều cách truyền dữ liệu vào function.
4.1. Positional arguments
Truyền theo thứ tự.
def introduce(name, age):
print(f"My name is {name}, I am {age} years old.")
introduce("Tom", 20)
# Output: My name is Tom, I am 20 years old.
4.2. Keyword arguments
Truyền theo tên tham số, không phụ thuộc thứ tự.
introduce(age=22, name="Linda")
# Output: My name is Linda, I am 22 years old.
4.3. Default arguments
Tham số có giá trị mặc định.
def greet(name, age=18):
print(f"Hello {name}, you are {age} years old.")
greet("Alice") # age = 18
greet("Bob", 25) # age = 25
4.4. Arbitrary arguments
*args
: nhận nhiều đối số dưới dạng tuple.**kwargs
: nhận nhiều đối số dưới dạng dictionary.
def sum_all(*args):
"""Return the sum of all arguments"""
return sum(args)
print(sum_all(1, 2, 3, 4)) # 10
def show_info(**kwargs):
"""Print all key-value pairs"""
for key, value in kwargs.items():
print(key, ":", value)
show_info(name="Anna", age=20, city="New York")
5. Return values
Function có thể trả về:
None
nếu không córeturn
.- Một giá trị duy nhất.
- Nhiều giá trị (tuple).
Example 1: No return
def say_hello():
print("Hello!")
result = say_hello()
print(result) # None
Example 2: Multiple return values
def calculate(a, b):
sum_ = a + b
diff = a - b
return sum_, diff
x, y = calculate(10, 5)
print(x, y) # 15 5
6. Scope và Lifetime của biến
6.1. Local vs Global
- Local variable: chỉ tồn tại trong function.
- Global variable: khai báo ngoài function, có thể truy cập ở mọi nơi.
x = 10 # global variable
def demo():
x = 5 # local variable
print(x)
demo() # 5
print(x) # 10
6.2. Global và Nonlocal
Dùng global
hoặc nonlocal
để thay đổi biến bên ngoài function.
count = 0
def increase():
global count
count += 1
increase()
print(count) # 1
7. Kết luận
Hàm (function) là một trong những trụ cột quan trọng trong Python, đóng vai trò then chốt trong việc xây dựng các chương trình có cấu trúc rõ ràng và dễ bảo trì. Việc nắm vững và sử dụng thành thạo hàm mang lại nhiều lợi ích, bao gồm:
- Giúp mã nguồn ngắn gọn, dễ đọc và dễ hiểu hơn.
- Hạn chế sự lặp lại, từ đó nâng cao khả năng tái sử dụng và bảo trì.
- Cho phép tổ chức chương trình thành các khối logic tách biệt, tạo nền tảng cho việc mở rộng và phát triển ứng dụng phức tạp.
Trong bài viết này, chúng ta đã đi qua các nội dung trọng tâm sau:
- Khái niệm và cú pháp định nghĩa hàm trong Python.
- Phân loại hàm: built-in function và user-defined function.
- Các cách truyền tham số (parameters/arguments).
- Cơ chế trả về giá trị từ hàm.
- Phạm vi (scope) và vòng đời (lifetime) của biến.
Việc hiểu sâu và ứng dụng linh hoạt các khía cạnh trên sẽ giúp bạn viết code Python hiệu quả hơn, đồng thời tạo nền móng vững chắc để tiến xa trong quá trình học tập và phát triển kỹ năng lập trình.
8. Tài liệu tham khảo
- Python Software Foundation. (n.d.). The Python Tutorial: Defining Functions. Python.org. Retrieved September 27, 2025, from https://docs.python.org/3/tutorial/controlflow.html#defining-functions
- Sweigart, A. (2019). Automate the Boring Stuff with Python (2nd ed.). No Starch Press.
- Lutz, M. (2013). Learning Python (5th ed.). O’Reilly Media.
- Matthes, E. (2019). Python Crash Course (2nd ed.). No Starch Press.