Hàm là một khối code được tổ chức cùng nhau để thực hiện một tác vụ cụ thể, định nghĩa hàm giúp code ngắn gọn, dễ quản lý và tái sử dụng. Trong Python, việc định nghĩa và gọi hàm rất đơn giản.
Để định nghĩa một hàm trong Python, ta sử dụng cú pháp:
def tên_hàm(tham_số):
code_thân_hàm
Trong đó:
-
def là từ khóa để định nghĩa hàm trong Python.
-
tên_hàm là tên của hàm. Tuân theo quy tắc đặt tên biến trong Python.
-
tham_số (không bắt buộc): là danh sách các tham số truyền vào hàm, cách nhau bởi dấu phẩy.
-
code_thân_hàm: là khối lệnh của hàm, được thụt vào so với def.
Ví dụ định nghĩa hàm tính tổng 2 số:
def tong(a, b):
return a + b
Như vậy, chúng ta đã định nghĩa thành công hàm tong với 2 tham số đầu vào là a và b. Hàm sẽ trả về tổng của a và b.
Lưu ý:
-
Hàm chỉ được định nghĩa chứ chưa thực thi.
-
Hàm có thể không có hoặc nhiều tham số.
-
Hàm có thể trả về hoặc không trả về giá trị.
-
Như vậy, với cú pháp đơn giản, ta có thể định nghĩa hàm trong Python một cách dễ dàng.
Cú pháp định nghĩa hàm trong Python
Cú pháp định nghĩa hàm trong Python như sau:
def tên_hàm(tham_số):
khối_lệnh_hàm
Trong đó:
-
def là từ khóa để định nghĩa hàm.
-
tên_hàm: đặt tên cho hàm, tuân thủ quy tắc đặt tên trong Python.
-
tham_số: danh sách các tham số truyền vào hàm, cách nhau bằng dấu phẩy. Tham số có thể có hoặc không.
-
khối_lệnh_hàm: các lệnh của hàm, thụt vào so với def.
Ví dụ:
def chao_mung():
print("Xin chào!")
def cong(a, b):
return a + b
def in_thong_tin(ten, tuoi):
print(f"Tên tôi là {ten}, năm nay tôi {tuoi} tuổi")
Như vậy, cú pháp định nghĩa hàm trong Python rất đơn giản và trực quan. Chỉ cần def, tên hàm, tham số (nếu có) và khối lệnh hàm là có thể định nghĩa được hàm.
Tham số của hàm trong Python
Tham số trong hàm Python là giá trị đầu vào của hàm. Tham số được truyền vào hàm khi gọi hàm.
Cú pháp khai báo tham số hàm:
def tên_hàm(tham_số1, tham_số2, ...):
Các lưu ý về tham số hàm:
-
Tham số của hàm được khai báo trong ngoặc đơn sau tên hàm.
-
Các tham số cách nhau bởi dấu phẩy.
-
Hàm có thể không có tham số hoặc nhiều tham số.
-
Tham số hàm chỉ tồn tại trong phạm vi hàm, không ảnh hưởng tới bên ngoài.
-
Khi gọi hàm, các tham số thực sẽ được gán cho tham số hàm theo thứ tự tương ứng.
Ví dụ khai báo tham số trong Python:
def tong(a, b):
return a + b
def in_thong_tin(ten, tuoi):
print(f"Tên tôi là {ten}, năm nay tôi {tuoi} tuổi")
Như vậy, tham số giúp hàm linh hoạt hơn, có thể tái sử dụng với nhiều giá trị đầu vào khác nhau.
Sau khi định nghĩa, ta cần gọi hàm để thực thi các lệnh bên trong. Cú pháp gọi hàm:
tên_hàm(tham_số)
Trong đó:
-
tên_hàm: tên hàm đã được định nghĩa trước đó.
-
tham_số: giá trị thực truyền vào hàm, phải đúng về kiểu dữ liệu và số lượng.
Ví dụ:
def chao_mung():
print("Xin chào!")
chao_mung()
def tong(a, b):
return a + b
tong(1, 2) # Trả về 3
Như vậy, để gọi hàm, ta chỉ cần viết tên hàm và truyền tham số vào nếu cần.
Lưu ý:
-
Chỉ gọi hàm sau khi nó đã được định nghĩa.
-
Số lượng, thứ tự và kiểu dữ liệu tham số truyền vào phải chính xác.
-
Có thể gán kết quả trả về của hàm cho biến.
-
Truyền tham số khi gọi hàm trong Python
Khi gọi hàm, có 2 cách truyền tham số:
Truyền theo vị trí
Giá trị thực được truyền vào theo thứ tự tương ứng với tham số hàm.
Ví dụ:
def tong(a, b):
return a + b
# Gọi hàm
tong(1, 2) # a = 1, b = 2
Truyền theo tên
Cú pháp:
tên_hàm(param1=value1, param2=value2...)
Ví dụ:
def tong(a, b):
return a + b
# Gọi hàm
tong(a=1, b=2) # a = 1, b = 2
tong(b=2, a=1) # a = 1, b = 2
Ưu điểm của truyền theo tên:
-
Không cần nhớ thứ tự tham số.
-
Code dễ đọc hơn.
-
Như vậy, Python cung cấp 2 cách linh hoạt để truyền tham số vào hàm. Ta có thể lựa chọn cách phù hợp với mục đích sử dụng.
Hàm generator trong Python
Khác với hàm thông thường, hàm generator là hàm được định nghĩa bởi từ khóa yield. Khi gọi, nó trả về một đối tượng generator mà không chạy ngay lập tức.
Để duyệt giá trị từ hàm generator, ta sử dụng vòng lặp hoặc hàm next().
Ưu điểm của generator
-
Tiết kiệm bộ nhớ vì chỉ tạo ra giá trị khi được gọi tới.
-
Có thể duyệt tuần tự nhiều giá trị mà không cần trả về toàn bộ cùng lúc.
Ví dụ hàm generator trong Python:
def generator(n):
for i in range(n):
yield i*2
gen = generator(3)
print(next(gen)) # 0
print(next(gen)) # 2
print(next(gen)) # 4
Như vậy hàm generator rất hữu ích để sinh dữ liệu trong Python một cách hiệu quả.
Kết luận: trên đây là một số nội dung cơ bản về định nghĩa và gọi hàm trong Python. Hy vọng bài viết sẽ giúp bạn nắm được cách sử dụng hàm thành thạo để viết code Python ngắn gọn, rõ ràng và dễ bảo trì hơn.