Hướng dẫn cho người mới bắt đầu để hiểu các hàm Lambda trong Python

Hướng dẫn cho người mới bắt đầu để hiểu các hàm Lambda trong Python

Lambdas trong Python là một trong những tính năng hữu ích, quan trọng và thú vị nhất cần biết. Thật không may, chúng cũng dễ hiểu nhầm và sai.





Trong bài viết này, chúng tôi sẽ giải thích mọi thứ bạn cần biết về những chức năng bí ẩn này, cách sử dụng chúng và tại sao chúng lại hữu ích.





Trước khi đi sâu vào các ví dụ thực tế này, bạn có thể muốn thiết lập một môi trường ảo Python. Nếu bạn thậm chí không muốn làm điều đó, thì ít nhất bạn nên thử các ví dụ này với một trình bao Python trực tuyến tương tác .





Lambda trong Python là gì?

Lambda chỉ đơn giản là một cách để định nghĩa một hàm trong Python. Đôi khi chúng được gọi là 'toán tử lambda' hoặc 'hàm lambda'.

Nếu bạn đã sử dụng Python trước đây, bạn có thể đã xác định các hàm của mình bằng cách sử dụng phản đối từ khóa và nó hoạt động tốt cho bạn cho đến nay. Vậy tại sao vẫn có cách khác để làm điều tương tự?



Sự khác biệt là các hàm lambda là ẩn danh. Có nghĩa, chúng là những hàm không cần đặt tên. Chúng được sử dụng để tạo các hàm nhỏ, dùng một lần trong trường hợp một hàm 'thực' quá lớn và cồng kềnh.

Lambdas trả về một đối tượng hàm, đối tượng này có thể được gán cho một biến. Lambdas có thể có bất kỳ số lượng đối số nào, nhưng chúng chỉ có thể có một biểu thức. Bạn không thể gọi các hàm khác bên trong lambdas.





Việc sử dụng phổ biến nhất cho các hàm lambda là trong mã yêu cầu một hàm một dòng đơn giản, trong đó sẽ là quá mức cần thiết để viết một hàm bình thường hoàn chỉnh. Điều này được trình bày chi tiết hơn bên dưới, trong 'What About Map, Filter, and Reduce?'.

Cách sử dụng Lambdas trong Python

Trước khi xem xét một hàm lambda, hãy xem một hàm siêu cơ bản được định nghĩa theo cách 'truyền thống':





def add_five(number):
return number + 5

print(add_five(number=4))

Hàm này rất cơ bản, nhưng nó dùng để minh họa lambdas. Của bạn có thể phức tạp hơn thế này. Hàm này thêm năm vào bất kỳ số nào được chuyển đến nó thông qua con số tham số.

Đây là cách nó trông như một hàm lambda:

add_five = lambda number: number + 5

print(add_five(number=4))

Thay vì sử dụng phản đối , từ lambda Được sử dụng. Không cần dấu ngoặc, nhưng bất kỳ từ nào theo sau lambda từ khóa được tạo dưới dạng tham số. Dấu hai chấm được sử dụng để phân tách các tham số và biểu thức. Trong trường hợp này, biểu thức là số + 5 .

Không cần thiết phải sử dụng trở lại từ khóa --- lambda tự động thực hiện việc này cho bạn.

Đây là cách bạn tạo một hàm lambda với hai đối số:

cách tìm chó con để bán
add_numbers_and_five = lambda number1, number2: number1 + number2 + 5

print(add_numbers_and_five(number1=4, number2=3))

Nếu bạn vẫn không chắc chắn về điểm của lambdas, phần tiếp theo sẽ đi sâu vào và giúp bạn nhìn thấy ánh sáng.

Python Lambdas Với Bản đồ, Bộ lọc và Rút gọn

Thư viện lõi Python có ba phương thức được gọi là bản đồ , giảm , và lọc . Những phương pháp này có thể là lý do tốt nhất để sử dụng các hàm lambda.

Các bản đồ hàm mong đợi hai đối số: một hàm và một danh sách. Nó nhận chức năng đó và áp dụng nó cho mọi phần tử trong danh sách, trả về danh sách các phần tử đã sửa đổi dưới dạng một đối tượng bản đồ. Các danh sách được sử dụng để chuyển đổi đối tượng bản đồ kết quả trở lại thành một danh sách.

Đây là cách sử dụng bản đồ mà không cần lambda:

list1 = [2, 4, 6, 8]
print(list1)
def add_five(number):
return number + 5

new_list = list(map(add_five, list1))
print(new_list)

Chức năng bản đồ này khá tiện dụng, nhưng nó có thể tốt hơn. NS add_five hàm được truyền vào dưới dạng đối số, nhưng nếu bạn không muốn tạo một hàm mỗi khi sử dụng bản đồ thì sao? Bạn có thể sử dụng lambda để thay thế!

Đây là mã tương tự trông như thế nào, chỉ với hàm được thay thế bằng lambda:

xem ai theo dõi tôi trên facebook
list1 = [2, 4, 6, 8]
print(list1)

new_list = list(map(lambda x: x + 5, list1))
print(new_list)

Như bạn có thể thấy, toàn bộ add_five chức năng không còn cần thiết. Thay vào đó, hàm lambda được sử dụng để giữ mọi thứ gọn gàng.

Với lọc chức năng, quá trình giống nhau. Lọc nhận một hàm và áp dụng nó cho mọi lớp trong một danh sách và tạo một danh sách mới chỉ với các phần tử khiến hàm trả về True.

Đầu tiên, không có lambdas:

numbers = [1, 4, 5, 10, 20, 30]
print(numbers)
def greater_than_ten_func(number):
if number > 10:
return True
else:
return False
new_numbers = list(filter(greater_than_ten_func, numbers))

print(new_numbers)

Không có gì sai với mã này, nhưng nó hơi dài. Hãy xem lambda có thể loại bỏ bao nhiêu dòng:

numbers = [1, 4, 5, 10, 20, 30]
print(numbers)
new_numbers = list(filter(lambda x: x > 10, numbers))
print(new_numbers)

Hàm lambda đã thay thế toàn bộ nhu cầu great_than_ten_func ! Và nó được thực hiện trong năm từ đơn giản. Đây là lý do tại sao lambdas rất mạnh mẽ: chúng giảm bớt sự lộn xộn cho các tác vụ đơn giản.

Cuối cùng, hãy xem giảm . Reduce là một hàm thú vị khác của Python. Nó áp dụng một phép tính luân phiên cho tất cả các mục trong danh sách. Bạn có thể sử dụng điều này để đếm tổng số hoặc nhân tất cả các số với nhau:

from functools import reduce
numbers = [10, 20, 30, 40]
print(numbers)
def summer(a, b):
return a + b

result = reduce(summer, numbers)
print(result)

Ví dụ này cần nhập giảm từ functools nhưng đừng lo, mô-đun functools là một phần của thư viện lõi Python.

Câu chuyện rất giống với lambda, không cần hàm:

from functools import reduce
numbers = [10, 20, 30, 40]
print(numbers)

result = reduce(lambda a, b: a + b, numbers)
print(result)

Những điều cần chú ý với Python Lambdas

Những ví dụ này đã cho thấy các hàm lambda dễ dàng như thế nào, cùng với bản đồ, bộ lọc và thu nhỏ, từ thư viện lõi Python. Tuy nhiên, có một số cách sử dụng mà các hàm lambda không giúp được gì.

Nếu bạn đang làm bất cứ điều gì nhiều hơn một tác vụ cơ bản hoặc muốn gọi các phương thức khác, hãy sử dụng một hàm bình thường. Lambdas rất tuyệt vời cho một hàm ẩn danh, nhưng chúng phải chỉ có một biểu thức duy nhất. Nếu lambda của bạn bắt đầu trông giống như một biểu thức chính quy, thì có lẽ đã đến lúc cấu trúc lại thành một phương thức chuyên dụng.

Để biết thêm mẹo, hãy kiểm tra hướng dẫn lập trình hướng đối tượng trong Python và xem hướng dẫn Câu hỏi thường gặp của chúng tôi dành cho người mới bắt đầu sử dụng Python.

Đăng lại Đăng lại tiếng riu ríu E-mail 3 cách để kiểm tra xem một email là thật hay giả

Nếu bạn nhận được một email có vẻ hơi khó hiểu, tốt nhất bạn nên kiểm tra tính xác thực của nó. Dưới đây là ba cách để biết một email có phải là thật hay không.

Đọc tiếp
Chủ đề liên quan
  • Lập trình
  • Python
  • Hướng dẫn viết mã
Giới thiệu về tác giả Joe Coburn(136 bài báo đã xuất bản)

Joe tốt nghiệp ngành Khoa học Máy tính tại Đại học Lincoln, Vương quốc Anh. Anh ấy là một nhà phát triển phần mềm chuyên nghiệp và khi anh ấy không lái máy bay không người lái hay viết nhạc, anh ấy thường có thể bị bắt gặp chụp ảnh hoặc sản xuất video.

Xem thêm từ Joe Coburn

Theo dõi bản tin của chúng tôi

Tham gia bản tin của chúng tôi để biết các mẹo công nghệ, đánh giá, sách điện tử miễn phí và các ưu đãi độc quyền!

Bấm vào đây để đăng ký