1. Trang chủ
  2. Blog
  3. Python Def: Cách Định Nghĩa Hàm Trong Python Cho Người Mới
Python

Python Def: Cách Định Nghĩa Hàm Trong Python Cho Người Mới

U

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.

Python def là gì và dùng để làm gì?

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 trong Python là gì?

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.

Vì sao nên dùng python def để viết 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.

Cú pháp python def chi tiết từng bước

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.Cú pháp python def định nghĩa hàm - codegym.vn

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.

Hàm def trong Python không có tham số

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.

Hàm def trong Python có tham số

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.

Tham số trong Python và cách truyền tham số

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.Tham số trong Python và cách truyền tham số - codegym.vn

Python function return: trả kết quả về cho nơi gọi hàm

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ị".

Khác nhau giữa print và return

Đâ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ụngHiện chữ ra màn hìnhTrả giá trị về nơi gọi hàm
Lưu vào biến được khôngKhông (biến nhận None)Có
Kết thúc hàmKhôngCó
Dùng khiChỉ 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.Python function return khác print - codegym.vn

Lỗi thường gặp khi dùng lệnh python def

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.

Bài tập tự luyện với python def

Hãy tự viết từng hàm bằng python def trước, rồi mới so với gợi ý.

  1. Viết hàm chu_vi(dai, rong) trả về chu vi hình chữ nhật.

  2. Viết hàm la_so_chan(n) trả về True nếu n chẵn, False nếu lẻ.

  3. 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.

Câu hỏi thường gặp về python def

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

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ó thể viết hàm bên trong một hàm khác không?

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.

Tên hàm có được trùng tên biến không?

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ắt đầu viết hàm đầu tiên với python def

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.

Chia sẻ:
Đã sao chép!

Bài viết liên quan

HỌC PYTHON - CÔNG TY CP CODEGYM VIỆT NAM

MST: 0108104526
Địa chỉ: Căn hộ TT01.23, dự án Hải Đăng city, phường Từ Liêm, thành phố Hà Nội
Điện thoại: +84 989 534 458
Website: codegym.vn