Khai Báo Hàm Trong Python Hiệu Quả

Hàm trong Python

Hàm trong Python có nghĩa là gì và tại sao người lập trình phải quan tâm đến nó. Xin mời quý đọc giả theo chúng tôi khám phá về hàm cũng như cách khai báo hàm trong Python nhé.

Giới thiệu về hàm trong Python

Ngôn ngữ nào cũng đề cập đến hàm, và Python cũng không phải là trường hợp ngoại lệ. Hàm được xem là một khối mã cho phép dùng lại để xử lý tác vụ riêng biệt. Không những vậy, những mã sẽ dễ tiếp cận và dễ đọc hơn khi bạn sử dụng hàm. Điều này giúp ích cho thao tác lặp và cực kỳ đơn giản khi bảo trì.

Thông thường, chúng ta sử dụng từ khóa ‘def’ theo sau là tên hàm và tham số để định nghĩa hàm. Tiếp đến, dùng dấu hai chấm để khởi tạo một khối mã cũng như đưa ra những câu lệnh. Các câu lệnh này sẽ được chạy bên trong hàm. Người dùng nên dùng từ khóa ‘return’ để trả giá trị về trong trường hợp hàm có giá trị trả về.

Hàm trong Python
Hình 1. Hàm trong Python

Sau đây, chúng tôi xin trình bày phương pháp định nghĩa một hàm.

def tinh_tong(a, b):

tong = a + b

return tong

Hàm này dùng để tính tổng hai số và có thể gọi hàm thông qua việc truyền cho các đối số để trả về giá trị.

tong_cua_5_va_7 = tinh_tong(5, 7)

print(tong_cua_5_va_7) # sẽ in ra 12

Bên cạnh đó, những hàm vô danh như lambda sẽ được Python trợ giúp nhằm phục vụ cho việc định nghĩa hàm giản đơn mà không nhất thiết phải sử dụng từ khóa ‘def’. Ví dụ sau sẽ dùng hàm để tính bình phương của một số.

square = lambda x: x ** 2

print(square(5)) # sẽ in ra 25

Cách khai báo hàm trong Python

Người lập trình sẽ dùng từ khóa ‘def’ kèm theo cú pháp bên dưới để thực hiện khai báo hàm trong Python.

def ten_ham(param…):

#code

Chú thích:

– ten_ham: tên của hàm cần đặt. Hãy nhớ rằng không được dùng số để bắt đầu đặt tên hàm và những ký tự đặc biệt cũng không được tồn tại trong tên hàm.

– Param: những tham số mà người dùng sẽ truyền vào hàm. Ngược lại hãy để trống nó nếu không có tham số.

Khai báo hàm trong Python
Hình 2. Khai báo hàm trong Python

Ví dụ: người dùng cần tìm số lớn nhất trong danh sách thông qua việc định nghĩa một hàm.

def tim_so_lon_nhat(danh_sach):

so_lon_nhat = danh_sach[0]

for so in danh_sach:

if so > so_lon_nhat:

so_lon_nhat = so

return so_lon_nhat

Từ đoạn mã trên có thể thấy được: tên hàm chính là ‘tim_so_lon_nhat’. Tham số ở đây là ‘danh_sach’ dùng để chỉ danh sách các số.

Lúc này, chúng ta dùng hàm để tìm số lớn nhất nằm trong danh sách thông qua việc điểm qua những phần tử trong danh sách đó cũng như so sánh với biến ‘so_lon_nhat’. Trong trường hợp, nếu số này lớn hơn ‘so_lon_nhat’, chính số này sẽ là số lớn nhất.

Sau đó, người dùng hãy sử dụng từ khóa ‘return’ để cho hàm tự động trả về giá trị ‘so_lon_nhat’. Mặt khác, cũng có thể gọi hàm ‘tim_so_lon_nhat’ cũng như truyền vào danh sách để tìm số lớn nhất trong chính danh sách đó.

>>> danh_sach = [1, 5, 3, 9, 2]

>>> so_lon_nhat = tim_so_lon_nhat(danh_sach)

>>> print(so_lon_nhat)

9

Kết quả hiển thị là 9. Chúng ta tìm ra được nó từ việc gọi hàm ‘tim_so_lon_nhat’ với đối số là danh sach ‘[1,5,3,9,2]’.

Làm sao để gọi hàm trong Python?

Chúng ta phải dùng tên hàm cũng như truyền những đối số vào trong dấu ngoặc đơn để thực hiện việc gọi hàm trong Python. Sau đây, mời các bạn theo dõi ví dụ để rõ hơn nhé.

Gọi hàm trong Python
Hình 3. Gọi hàm trong Python

Ví dụ 1:

def tinh_tong(a, b):

tong = a + b

return tong

Người dùng phải truyền vào hai số làm đối số. Sau đó, lưu giá trị trả về vào một biến để gọi hàm ‘tinh_tong’.

>>> x = 3

>>> y = 4

>>> z = tinh_tong(x, y)

>>> print(z)

7

Như các bạn đã thấy, hàm ‘tinh_tong’ đã được gọi với hai đối số ‘x’ và ‘y’ kèm theo việc lưu giá trị trả về vào biến ‘z’. Cuối cùng, in ra giá trị ‘z’. Giá trị ‘z’ chính là kết quả của phép tính ‘3+4’.

Ví dụ 2:

Người dùng định nghĩa hàm ‘tim_so_lon_nhat’ để chỉ ra số lớn nhất nằm trong danh sách.

def tim_so_lon_nhat(danh_sach):

so_lon_nhat = danh_sach[0]

for so in danh_sach:

if so > so_lon_nhat:

so_lon_nhat = so

return so_lon_nhat

Từ đoạn mã trên có thể nhận ra để gọi hàm ‘tim_so_lon_nhat’, hãy truyền vào một danh sách với những số và lưu giá trị trả về một biến.

>>> a = [1, 5, 3, 9, 2]

>>> b = tim_so_lon_nhat(a)

>>> print(b)

9

Hàm ‘tim_so_lon_nhat’ đã được gọi với đối số là danh sách ‘a’. Sau đó, các bạn dùng biến ‘b’ để lưu giá trị trả về và in ra giá trị đó. Nói tóm lại, đó là số lớn nhất trong danh sách ‘a’.

Tham số mặc định cho hàm trong Python

Người dùng có thể hoàn toàn thiết lập giá trị mặc định cho một hoặc nhiều tham số trong hàm đối với ngôn ngữ lập trình Python. Lúc này, khi gọi hàm mà giá trị cho tham số không thể truyền vào, lập tức giá trị mặc định sẽ được kích hoạt.

Dưới đây, là cú pháp khai báo hàm kèm theo tham số mặc định như:

def ten_ham(tham_so_1, tham_so_2=default_value):

# code thực hiện công việc của hàm

‘default_value’ được xem như giá trị mặc định cho ‘tham_so_2’. Giả định các bạn không truyền giá trị ‘tham_so_2’ lúc gọi hàm thì giá trị mặc định sẽ được dùng.

Ví dụ: Hãy in ra thông tin của một người bao gồm thông tin tên, tuổi và địa chỉ. Chúng ta cần phải dùng tham số mặc định nhằm chỉ định giá trị trên địa chỉ trong trường hợp không tồn tại giá trị địa chỉ cho vào.

def in_thong_tin(ten, tuoi, dia_chi="Không có địa chỉ"):

print("Tên:", ten)

print("Tuổi:", tuoi)

print("Địa chỉ:", dia_chi)

# Gọi hàm với giá trị địa chỉ được truyền vào

in_thong_tin("Anh", 20, "Hà Nội")

# Gọi hàm mà không truyền giá trị cho địa chỉ

in_thong_tin("Bình", 25)

Kết quả:

Tên: Anh

Tuổi: 20

Địa chỉ: Hà Nội

Tên: Bình

Tuổi: 25

Địa chỉ: Không có địa chỉ

Phạm vi của biến trong hàm

Chúng tôi sẽ đề cập phạm vi của biến trong hàm trong phần này. Thông thường, phạm vi của biến dùng để xác định vị trí nơi mà biến sẽ được truy cập. Những biến này có thể định nghĩa trong hàm và gần như không thể truy cập từ bên ngoài. Ngược lại, những biến được định nghĩa ngoài hàm thường có tính toàn cục và sẽ được truy cập từ mọi vị trí trong chương trình của bạn.

Khi chúng ta định nghĩa một biến bất kỳ trong hàm, nó sẽ được truy cập từ bên trong hàm đó. Trong trường hợp người dùng truy cập biến từ ngoài hàm, sẽ thông báo lỗi ‘NameError’.

Ví dụ: Để tính tổng hai số ‘a’ và ‘b’ và in ra kết quả thông qua việc định nghĩa hàm ‘tinh_tong’.

def tinh_tong(a, b):

tong = a + b

print("Tổng là:", tong)

tinh_tong(2, 3)

Kết quả:

Tổng là: 5

Biến ‘tong’ sẽ được dùng trong hàm ‘tinh_tong’ kèm theo mang tính cục bộ. Hãy chú ý rằng nó chỉ được phép truy cập từ bên trong hàm. Ngược lại, tiếp tục truy cập biến này từ bên ngoài hàm thì sẽ xuất hiện lỗi như bên dưới.

def tinh_tong(a, b):

tong = a + b

return tong

tong = tinh_tong(2, 3)

print("Tổng là:", tong)

Lỗi:

NameError: name 'tong' is not defined

Khi người dùng duy trì việc truy cập biến ‘tong’ ở bên ngoài hàm ‘tinh_tong’, lúc này hệ thống không hiểu cũng như tìm thấy biến này vì đơn giản nó chỉ xuất hiện bên trong hàm ‘tinh_tong’.

Truyền vô số tham số vào hàm trong Python

Đối với ngôn ngữ lập trình Python, người dùng được phép truyền vô số tham số vào hàm thông qua việc sử dụng ‘*’ trước tên tham số. Lúc này, tham số được tự hiểu là tham số không xác định hay tham số động.

Hãy nhớ khi dùng tham số động, người lập trình hoàn toàn có thể truyền vào một hàm với danh sách những đối số và lúc này hàm sẽ tự hiểu và chuyển toàn bộ những đối số đó thành bộ tập hợp các tham số.

Mặt khác, hãy dùng vòng lặp để giải quyết bộ những tham số này. Mời quý vị theo dõi ví dụ sau để biết thêm chi tiết.

Ví dụ: Cho hàm ‘tong’ để tính tổng những số được truyền vào hàm:

def tong(*args):

s = 0

for i in args:

s += i

return s

Có thể thấy được tham số ‘*args’ được dùng để hỗ trợ hàm ‘tong’ nhận thêm các đối số. Bên cạnh đó, hãy dùng vòng lặp để điểm qua mỗi đối số và tính tổng. Không những vậy, chúng ta gọi hàm ‘tong’ với bất cứ số lượng đối số nào nhé.

print(tong(1, 2, 3, 4, 5)) # Kết quả: 15

print(tong(2, 4, 6, 8, 10)) # Kết quả: 30

print(tong()) # Kết quả: 0

Như vậy, người dùng đã truyền vào hàm ‘tong’ một số lượng những đối số ngẫu nhiên thậm chí có trường hợp không tồn tại đối số nào. Hàm ‘tong’ có thể tính tổng cho những đối số này và hiển thị kết quả.

Tổng kết

Hàm hay khai báo hàm trong Python là nhiệm vụ căn bản cho hầu hết những người lập trình. Nói cách khác, chúng ta nên dành thời gian nghiên cứu và thực hành đối với chúng nhiều hơn để tích lũy thêm kinh nghiệm và kỹ năng sau này.

Rate this post

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *