Quy Tắc Đặt Tên Biến Trong Python: Luật Và Chuẩn PEP 8
Quy tắc đặt tên biến trong Python gồm 5 luật. Tên chỉ có chữ cái, chữ số và dấu gạch dưới; không bắt...
Uyên Hoàng Thị Tố
Đăng ngày 29/10/2026
Python def là từ khóa dùng để định nghĩa hàm trong Python. Bạn viết def, đặt tên hàm, thêm cặp ngoặc và dấu hai chấm, rồi viết khối lệnh thụt lề bên dưới. Bài viết hướng dẫn cú pháp, tham số, return và các lỗi thường gặp. Kèm ví dụ chạy được và bài tập tự luyện dành cho người mới bắt đầu.
Hàm là một khối lệnh được đặt tên. Bạn viết một lần, rồi gọi lại bao nhiêu lần tùy ý. Python def là cách phổ biến nhất để tạo ra một hàm như vậy.
def là viết tắt của "define", nghĩa là định nghĩa. Khi gặp def, Python ghi nhớ tên hàm và khối lệnh bên trong, nhưng chưa chạy chúng. Hàm chỉ chạy khi bạn gọi tên nó.
def chao():
print("Xin chào, Python!")
chao()
Kết quả hiện ra màn hình là Xin chào, Python!. Dòng chao() ở cuối chính là lệnh gọi hàm.
Người mới thường viết code dài và lặp lại nhiều đoạn giống nhau. Hàm giúp bạn gom các đoạn đó lại. Bạn nhận được bốn lợi ích:
Tái sử dụng: viết một lần, gọi nhiều lần.
Dễ đọc: tên hàm cho biết đoạn code làm gì.
Dễ sửa: muốn đổi cách tính, bạn chỉ sửa ở một chỗ.
Dễ kiểm tra: bạn thử từng hàm riêng lẻ trước khi ghép lại.
Mọi hàm tạo bằng python def đều theo một khung giống nhau:
def ten_ham(tham_so_1, tham_so_2):
# khối lệnh của hàm
return gia_tri
Bạn làm theo 5 bước dưới đây để viết một hàm hoàn chỉnh bằng python def.
Bước 1: Viết từ khóa def ở đầu dòng.
Bước 2: Đặt tên hàm. Tên theo cùng luật với tên biến: chữ thường, nối bằng dấu gạch dưới, không bắt đầu bằng số. Bạn xem thêm ở bài quy tắc đặt tên biến trong Python.
Bước 3: Thêm cặp ngoặc tròn sau tên hàm. Nếu hàm cần dữ liệu đầu vào, bạn liệt kê tham số trong ngoặc, cách nhau bằng dấu phẩy.
Bước 4: Kết thúc dòng đầu bằng dấu hai chấm :.
Bước 5: Viết thân hàm ở các dòng dưới, thụt vào 4 dấu cách. Python dùng thụt lề để biết dòng nào thuộc hàm.
Với python def, hàm không tham số có cặp ngoặc rỗng. Hàm chao() ở trên là ví dụ. Loại này hợp với các việc cố định, như in lời chào hay in menu.
Khi cần xử lý dữ liệu khác nhau mỗi lần gọi, bạn thêm tham số vào ngoặc của python def.
def chao(ten):
print("Xin chào,", ten)
chao("Lan")
chao("Minh")
Hai lần gọi cho hai kết quả: Xin chào, Lan và Xin chào, Minh. Cùng một hàm, dữ liệu khác nhau.
Hai thuật ngữ này hay bị nhầm. Tham số là tên đứng trong ngoặc khi viết def. Đối số là giá trị thật bạn đưa vào khi gọi hàm.
Có ba cách truyền tham số trong Python mà người mới cần biết:
Theo vị trí: giá trị đứng đúng thứ tự tham số.
Theo tên: bạn ghi rõ ten_tham_so=gia_tri, thứ tự không quan trọng.
Giá trị mặc định: tham số có sẵn giá trị, bạn có thể bỏ qua khi gọi.
def tinh_tien(gia, so_luong=1, giam_gia=0):
return gia * so_luong - giam_gia
print(tinh_tien(50000)) # 50000
print(tinh_tien(50000, 3)) # 150000
print(tinh_tien(50000, giam_gia=10000)) # 40000
print(tinh_tien(gia=20000, so_luong=2)) # 40000
Tham số có giá trị mặc định phải đứng sau các tham số bắt buộc. Nếu bạn đặt so_luong=1 trước gia, Python báo lỗi cú pháp.
Từ khóa return đưa một giá trị ra khỏi hàm. Bạn có thể lưu giá trị đó vào biến hoặc dùng tiếp trong phép tính khác.
def binh_phuong(x):
return x * x
kq = binh_phuong(5)
print(kq) # 25
Khi Python chạy đến return, hàm kết thúc ngay. Mọi dòng phía sau return trong cùng hàm sẽ không được chạy.
Hàm có thể trả về nhiều giá trị cùng lúc. Python gói chúng thành một bộ (tuple), và bạn tách ra khi nhận.
def min_max(ds):
return min(ds), max(ds)
nho, lon = min_max([4, 9, 2, 7])
print(nho, lon) # 2 9
Hàm không có return sẽ trả về None, tức là "không có giá trị".
Đây là điểm người mới nhầm nhiều nhất khi học python function return.
| Tiêu chí | print() | return |
|---|---|---|
| Tác dụng | Hiện chữ ra màn hình | Trả giá trị về nơi gọi hàm |
| Lưu vào biến được không | Không (biến nhận None) | Có |
| Kết thúc hàm | Không | Có |
| Dùng khi | Chỉ cần xem kết quả | Cần dùng kết quả cho bước sau |
def in_ten(ten):
print(ten)
kq = in_ten("An")
print(kq) # None
Dòng đầu in An, dòng sau in None. Hàm chỉ in chữ, không trả về gì để lưu.
Những lỗi python def dưới đây chúng tôi đã chạy thử trên Python 3. Bạn gặp thông báo nào, hãy đối chiếu để sửa nhanh.
Quên dấu hai chấm sau dòng def: Python báo SyntaxError: expected ':'. Hãy thêm : vào cuối dòng.
Quên thụt lề thân hàm: Python báo IndentationError: expected an indented block. Hãy thụt thân hàm vào 4 dấu cách.
Gọi hàm trước khi định nghĩa: Python báo NameError: name '...' is not defined. Hãy đặt phần def lên trên lệnh gọi.
Thiếu đối số khi gọi hàm: Python báo TypeError: ... missing 1 required positional argument. Hãy truyền đủ giá trị cho các tham số bắt buộc.
Dùng print thay return: biến nhận None. Hãy đổi sang return nếu bạn cần dùng kết quả.
Khi hàm có vòng lặp bên trong, bạn nên nắm vững cú pháp vòng lặp trước. Bài Python for giải thích từng bước cho người mới.
Hãy tự viết từng hàm bằng python def trước, rồi mới so với gợi ý.
Viết hàm chu_vi(dai, rong) trả về chu vi hình chữ nhật.
Viết hàm la_so_chan(n) trả về True nếu n chẵn, False nếu lẻ.
Viết hàm tong(ds) trả về tổng các số trong danh sách ds.
Gợi ý cho bài 1 và 2:
def chu_vi(dai, rong):
return (dai + rong) * 2
def la_so_chan(n):
return n % 2 == 0
print(chu_vi(5, 3)) # 16
print(la_so_chan(10)) # True
print(la_so_chan(7)) # False
Với bài 3, bạn dùng vòng lặp for cộng dồn vào một biến. Muốn luyện thêm, bạn xem bài Bài tập Python cơ bản có lời giải.
Không. Hàm không có return vẫn chạy bình thường và trả về None. Bạn chỉ cần return khi muốn dùng kết quả ở nơi khác.
Có. Python cho phép dùng def ngay trong thân một hàm khác. Bạn xem ví dụ ở bài Hàm bên trong Python.
Không nên. Hàm cũng là một tên trong chương trình. Nếu đặt trùng, tên sau sẽ ghi đè tên trước và gây lỗi khó hiểu.
Bạn đã nắm cú pháp, cách truyền tham số, return và các lỗi hay gặp. Hãy chạy từng ví dụ trên máy, rồi sửa giá trị để xem kết quả thay đổi.
Đăng ký học thử miễn phí để viết code ngay trong bài học, hoặc bắt đầu với khóa Nhập môn Lập trình Python. Bạn cũng có thể gọi +84 989 534 458 để chúng tôi tư vấn lộ trình. Luyện đều mỗi ngày, bạn sẽ dùng python def thật quen tay.
Quy tắc đặt tên biến trong Python gồm 5 luật. Tên chỉ có chữ cái, chữ số và dấu gạch dưới; không bắt...
Giáo trình Python cho người mới nên có 8 chương, đi từ cài môi trường đến lập trình hướng đối tượng....
Bài tập Python giúp bạn nhớ cú pháp lâu hơn nhiều so với chỉ đọc lý thuyết. Bài viết tổng hợp 15 bài...