Hướng dẫn hàm ẩn danh python

Chào các bạn trong bài viết này, mình sẽ giới thiệu với các bạn về Lambda Function còn được gọi là các hàm ẩn danh.Mình sẽ giải thích cho các bạn hiểu về khái niệm của chúng là gì, cú pháp và cách xử dụng của chúng. Các bạn cùng tìm hiểu trong bài viết của mình nhé!

Khái niệm Lambda Function(hàm ẩn danh) trong Python

Trong Python, một hàm ẩn danh là một hàm được định nghĩa mà không có tên. Trong khi các hàm bình thường sẽ được định nghĩa bằng các từ khóa def trong Python, thì các hàm ẩn danh sẽ được định nghĩa bằng từ khóa lambda. Vì vậy các hàm ẩn danh còn được gọi là các Lambda Function.


Làm cách nào xử dụng Lambda Function trong Python?

Một lambda function trong Python sẽ có cú pháp như sau:

Cú pháp của Lambda Function trong python

lambda arguments: expression

Các hàm lambda có thể có bất kỳ số đối số nào nhưng chỉ có một biểu thức. Biểu thức được đánh giá và trả về. Các lambda function có thể được sử dụng ở bất cứ chỗ nào yêu cầu các đối tượng hàm.


Ví dụ về Lambda Function trong python

Dưới đây là một ví dụ về lambda function để xử lý việc tăng gấp đôi giá trị đầu vào:

#Ví dụ về việc sử dụng các Lambda Function trong Python
double = lambda x: x * 2

print(double(5))

Kết quả:

10

Ở ví dụ trên lambda x: x * 2 sẽ là hàm lamba. Ở đây x là đối số vào x*2 là biểu thức được đánh giá và trả về.

Function này sẽ không có tên. Nó trả về một object được định danh là double. Giờ thì chúng ta có thể gọi nó như một hàm bình thường. Ví dụ:

double = lambda x: x * 2

Nó sẽ tương tự như các khai báo function như sau:

def double(x):
   return x * 2

Xử dụng Lambda Function trong Python

Chúng ta thường sử dụng lambda function khi mà cần một hàm không tên trong một khoảng thời gian ngắn.

Trong Python, chúng ta thường sử dụng lambda function làm đối số cho một hàm bậc cao hơn (một hàm mà có thể nhận các hàm khác làm đối số). Lambda function thường được sử dụng cùng với các hàm tích hợp sẵn như filter(), map()...

Ví dụ khi xử dụng Lambda Function với Filter()

Hàm filter() trong Python nhận một hàm và một danh sách làm đối số. Hàm được gọi với tất cả các items trong danh sách và một i danh sách mới được trả về chứa các items mà hàm đánh giá là True.

Đây là một ví dụ sử dụng hàm filter() để chỉ lọc ra các số chẵn từ danh sách.

my_list = [1, 5, 4, 6, 8, 11, 3, 12]

new_list = list(filter(lambda x: (x%2 == 0) , my_list))

print(new_list)

Kết quả:

[4, 6, 8, 12]

Ví dụ khi xử dụng Lambda Function với map()

Hàm map() trong Python nhận một hàm và một danh sách.

Hàm được gọi với tất cả các items trong danh sách và một danh sách mới được trả về chứa các item được hàm đó for each cho từng item. Đây là một ví dụ sử dụng hàm map() để nhân đôi tất cả các mục trong một danh sách.

my_list = [1, 5, 4, 6, 8, 11, 3, 12]

new_list = list(map(lambda x: x * 2 , my_list))

print(new_list)

Kết quả:

[2, 10, 8, 12, 16, 22, 6, 24]

Ưu điểm

Ưu điểm khi sử dụng Lambda Function theo tìm hiểu các nhân mình thấy thì nó sẽ viết khá ngắn gọn. Tối ưu khi viết Code là rất tốt. Rất tối ưu khi cần xử lý logic trong một chỗ nhất định trong 1 khoảng thời gian ngắn

Nhược điểm

Ưu điểm khi sử dụng Lambda Function theo mình thì sẽ rất khó cho việc debugmaintenance.


Kết Luận

Dưới đây mình đã giới thiệu với các bạn về Lambda Function khái niệm, các xử dụng và một số ví dụ sử dụng Lambda Function trong Python. Hi vọng các bạn thích bài viết này. Nếu có bất kì thắc mắc gì hãy để lại comment ở phía dưới nhé.


Tham Khảo chi tiết hơn

https://www.programiz.com/python-programming/anonymous-function

Hàm ẩn danh trong Python là gì? Cách khai báo hàm lambda trong Python. Ví dụ về hàm lambda trong Python sử dụng với hàm filter và hàm map() trong Python.

Hàm ẩn danh trong Python là gì?

  • Hàm ẩn danh trong Python (còn gọi là hàm nặc danh –  anonymous function) là một hàm được định nghĩa mà không có tên và câu lệnh return.
  • Các hàm bình thường sử dụng từ khóa def để định nghĩa thì các hàm ẩn danh được định nghĩa bằng từ khóa lambda. Vì vậy các hàm ẩn danh còn được gọi là các Lambda Function.
  • Các hàm ẩn danh lambda  có thể khai báo, định nghĩa ở bất kỳ đâu và không có khả năng tái sử dụng. Lambda chỉ tồn tại trong phạm vi của biến mà nó được định nghĩa, vì vậy nếu như biến đó vượt ra ngoài phạm vi thì hàm này cũng không còn tác dụng nữa.
  • Hàm nặc danh lambda thường được dùng để gán vào biến, hay được gán vào hàm, class như một tham số.

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

Cú pháp của Lambda Function trong python

lambda arguments_list: expression

  • lambda là keyword bắt buộc
  • arguments_list là các tham số truyền vào lambda
  • expression là các biểu thức xử lý lambda

Các hàm lambda có thể có bất kỳ số đối số nào nhưng chỉ có một biểu thức expression. Các lambda function có thể được sử dụng ở bất cứ chỗ nào yêu cầu các đối tượng hàm. Hàm lambda không có câu lệnh return mà chính giá trị của biểu thức expression được sử dụng làm kết quả trả về  của hàm.

Hướng dẫn hàm ẩn danh python

Ví dụ về hàm lambda trong Python

Ví dụ sau khai báo một lambda function để tính tổng của 2 biến:

add = lambda a, b: a + b

# sử dụng hàm lambda bằng cách sử dụng biến add
add(3, 4) #kết quả 7

Kiểm tra xem hàm lambda ở trên có kiểu dữ liệu là gì:

add = lambda a, b: a + b

type(add) # kết quả function

Hàm sau dùng để nhân đôi giá trị của tham số

double = lambda x: x * 2
print(double(5)) #kết quả 10

Function này sẽ không có tên. Nó trả về một object được định danh là double. Giờ thì chúng ta có thể gọi nó như một hàm bình thường. Ví dụ:

double = lambda x: x * 2

Nó sẽ tương tự như các khai báo function như sau:

def double(x):
    return x * 2

Khi nào nên sử dụng hàm nặc danh lambda?

Chúng ta thường sử dụng lambda function khi mà cần một hàm không tên trong một khoảng thời gian ngắn. Ví dụ như sử dụng lambda function làm đối số cho một hàm bậc cao hơn (một hàm mà có thể nhận các hàm khác làm đối số) chẳng hạn hàm filter() hàm map()

Hàm filter trong Python

Hàm filter() trong Python lọc ra các phần tử theo điều kiện của hàm func từ list, dict… Hàm này sẽ chỉ trả về những giá trị mà điều kiện trong func chấp nhận (có nghĩa là True). Cú pháp của hàm filter() như thế nào, nó có những tham số gì và cách sử dụng ra sao? Mời bạn đọc theo dõi.

Cú pháp hàm filter() trong Python

filter(func, iterable)

Hàm filter() có 2 tham số:

  • func: là hàm điều kiện để kiểm tra các phần tử trong interable có thỏa mãn điều kiện đó hay không. Kết quả của hàm func này là đúng True hoặc sai False.
  • interable: là các iterable cần lọc, có thể là set, list, tuple hoặc container.

Đây là một ví dụ sử dụng hàm filter() để chỉ lọc ra các số chẵn từ một danh sách.

my_list = [1, 5, 4, 6, 8, 11, 3, 12, 17, 21]

new_list = list(filter(lambda x: (x%2 == 0) , my_list))

print(new_list) #kết quả:  [4, 6, 8, 12]

Xem thêm Kiểu dữ liệu list danh sách trong Python

Hàm map() trong Python

Hàm map() tích hợp sẵn trong Python có tác dụng duyệt tất cả các phần tử của một iterable (list, tuple, dictionary…) qua một hàm cho trước và trả về một list kết quả sau khi thực thi.

Cú pháp hàm map() trong Python

map(function, iterable, ...)

  • function: Hàm thực thi cho từng phần tử trong iterable.
  • iterable: Một list, tuple, dictionary… muốn duyệt.

Bạn có thể truyền nhiều iterable cho hàm map().

Hàm map() duyệt tất cả các phần tử của iterable qua function và trả về một list kết quả sau khi thực thi.

Giá trị trả về từ map() được gọi là map object. Kết quả này có thể được truyền vào các hàm list() (để tạo list trong Python), hay set() (để tạo một set các phần tử mới)…

Ví dụ sau tạo một danh sách mới bằng cách nhân đôi các phần tử của danh sách ban đầu:

my_list = [1, 5, 4, 6, 8, 11, 3, 12]

new_list = list(map(lambda x: x * 2 , my_list))

print(new_list) #Kết quả: [2, 10, 8, 12, 16, 22, 6, 24]