HomeLập trìnhPythonHàm Lambda trong...

Hàm Lambda trong Python – Cú pháp ví dụ


Các hàm lambda là các hàm ẩn danh chỉ có thể chứa một biểu thức.

Bạn có thể nghĩ rằng các hàm lambda là một tính năng trung cấp hoặc nâng cao, nhưng ở đây bạn sẽ tìm hiểu cách bạn có thể dễ dàng bắt đầu sử dụng chúng trong mã của mình.

Trong Python, các hàm thường được tạo như sau:

def my_func(a):
  # function body

Bạn khai báo chúng với def từ khóa, đặt tên cho chúng, sau đó thêm danh sách các đối số được bao quanh bởi dấu ngoặc tròn. Có thể có nhiều dòng mã, với bao nhiêu câu lệnh và biểu thức mà bạn cần bên trong.

Nhưng đôi khi bạn có thể cần một hàm chỉ có một biểu thức bên trong, chẳng hạn như một hàm nhân đôi đối số của nó:

def double(x):
  return x*2

Đây là một chức năng mà bạn có thể sử dụng, ví dụ, với map phương pháp.

def double(x):
  return x*2
  
my_list = [1, 2, 3, 4, 5, 6]
new_list = list(map(double, my_list))
print(new_list) # [2, 4, 6, 8, 10, 12]

Đây sẽ là một nơi tốt để sử dụng hàm lambda, vì nó có thể được tạo chính xác ở nơi bạn cần sử dụng. Điều này có nghĩa là sử dụng ít dòng mã hơn và bạn có thể tránh tạo một hàm được đặt tên chỉ được sử dụng một lần (và sau đó phải được lưu trữ trong bộ nhớ).

Đọc thêm  Cách xây dựng chương trình Python để tải xuống video YouTube

Cách sử dụng hàm lambda trong Python

Bạn sử dụng các hàm lambda khi bạn cần một hàm nhỏ trong thời gian ngắn – ví dụ: làm đối số của hàm bậc cao hơn như map hoặc filter.

Cú pháp của hàm lambda là lambda args: expression. Đầu tiên bạn viết từ lambdasau đó là một khoảng trắng, sau đó là danh sách tất cả các đối số được phân tách bằng dấu phẩy, tiếp theo là dấu hai chấm và sau đó là biểu thức là phần thân của hàm.

Lưu ý rằng bạn không thể đặt tên cho các hàm lambda vì chúng ẩn danh (không có tên) theo định nghĩa.

Một hàm lambda có thể có bao nhiêu đối số mà bạn cần sử dụng, nhưng phần thân phải là một biểu thức duy nhất.

ví dụ 1

Ví dụ: bạn có thể viết một hàm lambda nhân đôi đối số của nó: lambda x: x*2và sử dụng nó với map chức năng nhân đôi tất cả các phần tử trong danh sách:

my_list = [1, 2, 3, 4, 5, 6]
new_list = list(map(lambda x: x*2, my_list))
print(new_list) # [2, 4, 6, 8, 10, 12]

Lưu ý sự khác biệt giữa chức năng này và chức năng chúng tôi đã viết ở trên với double chức năng. Cái này nhỏ gọn hơn và không có chức năng bổ sung nào chiếm dung lượng trong bộ nhớ.

ví dụ 2

Hoặc bạn có thể viết một hàm lambda để kiểm tra xem một số có dương không, chẳng hạn như lambda x: x > 0và sử dụng nó với filter để tạo một danh sách chỉ các số dương.

my_list = [18, -3, 5, 0, -1, 12]
new_list = list(filter(lambda x: x > 0, my_list))
print(new_list) # [18, 5, 12]

Hàm lambda được xác định nơi nó được sử dụng, theo cách này, không có hàm được đặt tên trong bộ nhớ. Nếu một chức năng được sử dụng, tôi chỉ ở một nơi thì nên sử dụng chức năng lambda để tránh lộn xộn.

Đọc thêm  Biến toàn cục Python – Cách xác định ví dụ về biến toàn cục

ví dụ 3

Bạn cũng có thể trả về hàm lambda từ một hàm.

Nếu bạn cần tạo nhiều hàm nhân các số, chẳng hạn như nhân đôi hoặc nhân ba, v.v., lambda có thể giúp bạn.

Thay vì tạo nhiều hàm, bạn có thể tạo một hàm multiplyBy như bên dưới, sau đó gọi hàm này nhiều lần với các đối số khác nhau để tạo các hàm nhân đôi, nhân ba, v.v.

def muliplyBy (n):
  return lambda x: x*n
  
double = multiplyBy(2)
triple = muliplyBy(3)
times10 = multiplyBy(10)

Hàm lambda nhận giá trị n từ chức năng cha mẹ, do đó trong double giá trị của n2Trong triple nó là 3 và trong times10 nó là 10. Bây giờ gọi các hàm này với một đối số sẽ nhân số đó.

double(6)
> 12
triple(5)
> 15
times10(12)
> 120

Nếu bạn không sử dụng hàm lambda ở đây, bạn sẽ cần xác định một hàm khác bên trong multiplyBymột cái gì đó giống như dưới đây:

def muliplyBy (x):
  def temp (n):
    return x*n
  return temp

Sử dụng hàm lambda sử dụng một nửa số dòng và làm cho nó dễ đọc hơn.

Phần kết luận

Hàm lambda là một cách viết hàm nhỏ gọn nếu hàm của bạn chỉ bao gồm một biểu thức nhỏ. Chúng thường không phải là thứ mà các lập trình viên mới bắt đầu sử dụng, nhưng ở đây bạn đã thấy cách bạn có thể dễ dàng sử dụng chúng ở mọi cấp độ.



Zik.vn – Biên dịch & Biên soạn Lại

Đọc thêm  Cách xâu chuỗi con trong Python
spot_img

Create a website from scratch

Just drag and drop elements in a page to get started with Newspaper Theme.

Buy Now ⟶

Bài viết liên quang

DMCA.com Protection Status