Hàm lambda trong chương trình python

Mặc dù Python là ngôn ngữ lập trình hướng đối tượng, các hàm lambda rất hữu ích khi bạn đang thực hiện nhiều loại lập trình hàm khác nhau

Ghi chú. bài viết này giả định rằng bạn đã hiểu về lập trình Python và cách sử dụng một hàm thông thường. Nó cũng cho rằng bạn có Python 3. 8 trở lên được cài đặt trên thiết bị của bạn

Giải thích các hàm Lambda của Python

Trong Python, các hàm có thể nhận một hoặc nhiều đối số vị trí hoặc từ khóa, danh sách biến đối số, danh sách biến đối số từ khóa, v.v. Chúng có thể được chuyển vào hàm bậc cao hơn và được trả về dưới dạng đầu ra. Các hàm thông thường có thể có một số biểu thức và nhiều câu lệnh. Họ cũng luôn có một cái tên

Hàm lambda Python chỉ đơn giản là một hàm ẩn danh. Nó cũng có thể được gọi là một chức năng không tên. Các hàm Python bình thường được xác định bởi từ khóa

#filter function
numbers = [11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
def multiples_of_three[x]:
        return x % 3 == 0

print[list[filter[multiples_of_three, numbers]]]
>>>>
[12, 15, 18]
0. Các hàm lambda trong Python thường bao gồm từ khóa
#filter function
numbers = [11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
def multiples_of_three[x]:
        return x % 3 == 0

print[list[filter[multiples_of_three, numbers]]]
>>>>
[12, 15, 18]
1, bất kỳ số lượng đối số nào và một biểu thức

Ghi chú. các thuật ngữ hàm lambda, biểu thức lambda và biểu mẫu lambda có thể được sử dụng thay thế cho nhau, tùy thuộc vào ngôn ngữ lập trình hoặc lập trình viên

Các hàm lambda chủ yếu được sử dụng như một lớp lót. Chúng được sử dụng rất thường xuyên trong các chức năng bậc cao hơn như

#filter function
numbers = [11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
def multiples_of_three[x]:
        return x % 3 == 0

print[list[filter[multiples_of_three, numbers]]]
>>>>
[12, 15, 18]
2 và
#filter function
numbers = [11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
def multiples_of_three[x]:
        return x % 3 == 0

print[list[filter[multiples_of_three, numbers]]]
>>>>
[12, 15, 18]
3. Điều này là do các hàm ẩn danh được truyền dưới dạng đối số cho các hàm bậc cao hơn, điều này không chỉ được thực hiện trong lập trình Python

Hàm lambda cũng rất hữu ích để xử lý việc hiểu danh sách trong Python — với nhiều tùy chọn khác nhau để sử dụng biểu thức lambda Python cho mục đích này

Lambdas rất tuyệt khi được sử dụng để kết xuất có điều kiện trong các khung giao diện người dùng như Tkinter, wxPython, Kivy, v.v. Mặc dù hoạt động của khung GUI Python không được đề cập trong bài viết này, nhưng một số đoạn mã tiết lộ việc sử dụng nhiều hàm lambda để hiển thị giao diện người dùng dựa trên tương tác của người dùng

Những điều cần hiểu trước khi đi sâu vào các hàm Lambda của Python

Vì Python là ngôn ngữ lập trình hướng đối tượng nên mọi thứ đều là đối tượng. Các lớp Python, thể hiện lớp, mô-đun và hàm đều được xử lý dưới dạng đối tượng

Một đối tượng chức năng có thể được gán cho một biến

Không có gì lạ khi gán biến cho các hàm thông thường trong Python. Hành vi này cũng có thể được áp dụng cho các hàm lambda. Điều này là do chúng là các đối tượng chức năng, mặc dù chúng không có tên

def greet[name]:
    return f'Hello {name}'

greetings = greet
greetings['Clint']
>>>>
Hello Clint

Các hàm bậc cao hơn như map[], filter[] và reduce[]

Có khả năng bạn sẽ cần sử dụng hàm lambda trong các hàm tích hợp sẵn như

#filter function
numbers = [11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
def multiples_of_three[x]:
        return x % 3 == 0

print[list[filter[multiples_of_three, numbers]]]
>>>>
[12, 15, 18]
3 và
#filter function
numbers = [11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
def multiples_of_three[x]:
        return x % 3 == 0

print[list[filter[multiples_of_three, numbers]]]
>>>>
[12, 15, 18]
2, cũng như với
#filter function
numbers = [11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
def multiples_of_three[x]:
        return x % 3 == 0

print[list[filter[multiples_of_three, numbers]]]
>>>>
[12, 15, 18]
6 — được nhập từ mô-đun funcools trong Python, vì đây không phải là hàm tích hợp. Theo mặc định, các hàm bậc cao hơn là các hàm nhận các hàm khác làm đối số

Như đã thấy trong các ví dụ mã bên dưới, các hàm bình thường có thể được thay thế bằng lambdas, được chuyển dưới dạng đối số vào bất kỳ hàm bậc cao nào trong số này

________số 8

#filter function
numbers = [11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
def multiples_of_three[x]:
        return x % 3 == 0

print[list[filter[multiples_of_three, numbers]]]
>>>>
[12, 15, 18]

#filter function
numbers = [11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
def multiples_of_three[x]:
        return x % 3 == 0

print[list[filter[multiples_of_three, numbers]]]
>>>>
[12, 15, 18]
0

Sự khác biệt giữa một tuyên bố và một biểu thức

Một điểm gây nhầm lẫn phổ biến giữa các nhà phát triển là sự khác biệt giữa một câu lệnh và một biểu thức trong lập trình

Câu lệnh là bất kỳ đoạn mã nào thực hiện điều gì đó hoặc thực hiện một hành động — chẳng hạn như điều kiện

#filter function
numbers = [11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
def multiples_of_three[x]:
        return x % 3 == 0

print[list[filter[multiples_of_three, numbers]]]
>>>>
[12, 15, 18]
7 hoặc
#filter function
numbers = [11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
def multiples_of_three[x]:
        return x % 3 == 0

print[list[filter[multiples_of_three, numbers]]]
>>>>
[12, 15, 18]
8

Một biểu thức được tạo thành từ sự kết hợp của các biến, giá trị và toán tử và đánh giá thành một giá trị mới

Sự khác biệt này rất quan trọng khi chúng ta khám phá chủ đề về các hàm lambda trong Python. Một biểu thức như biểu thức dưới đây trả về một giá trị

#filter function
numbers = [11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
def multiples_of_three[x]:
        return x % 3 == 0

print[list[filter[multiples_of_three, numbers]]]
>>>>
[12, 15, 18]
3

Một tuyên bố trông như thế này

#filter function
numbers = [11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
def multiples_of_three[x]:
        return x % 3 == 0

print[list[filter[multiples_of_three, numbers]]]
>>>>
[12, 15, 18]
4

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

Hướng dẫn về phong cách Python quy định rằng mọi hàm lambda phải bắt đầu bằng từ khóa

#filter function
numbers = [11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
def multiples_of_three[x]:
        return x % 3 == 0

print[list[filter[multiples_of_three, numbers]]]
>>>>
[12, 15, 18]
1 [không giống như các hàm thông thường, bắt đầu bằng từ khóa
#filter function
numbers = [11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
def multiples_of_three[x]:
        return x % 3 == 0

print[list[filter[multiples_of_three, numbers]]]
>>>>
[12, 15, 18]
0]. Cú pháp của hàm lambda thường như sau

#filter function
numbers = [11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
def multiples_of_three[x]:
        return x % 3 == 0

print[list[filter[multiples_of_three, numbers]]]
>>>>
[12, 15, 18]
7

Các hàm lambda có thể nhận bất kỳ số lượng đối số vị trí, đối số từ khóa hoặc cả hai, theo sau là dấu hai chấm và chỉ một biểu thức. Không thể có nhiều hơn một biểu thức vì nó bị hạn chế về mặt cú pháp. Hãy xem xét một ví dụ về biểu thức lambda bên dưới

#filter function
numbers = [11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
def multiples_of_three[x]:
        return x % 3 == 0

print[list[filter[multiples_of_three, numbers]]]
>>>>
[12, 15, 18]
8

Từ ví dụ trên, biểu thức lambda được gán cho biến

#filter function
numbers = [11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
def multiples_of_three[x]:
        return x % 3 == 0

print[list[filter[multiples_of_three, numbers]]]
>>>>
[12, 15, 18]
01. Một lệnh gọi hàm được thực hiện bằng cách truyền các đối số, có giá trị là 14

Hãy lấy một ví dụ khác dưới đây

#filter function
numbers = [11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
def multiples_of_three[x]:
        return x % 3 == 0

print[list[filter[multiples_of_three, numbers]]]
>>>>
[12, 15, 18]
0

Như đã thấy ở trên, hàm lambda ước tính là 728. 0. Một sự kết hợp của các đối số vị trí và từ khóa được sử dụng trong hàm lambda Python. Trong khi sử dụng các đối số vị trí, chúng ta không thể thay đổi thứ tự được nêu trong định nghĩa hàm. Tuy nhiên, chúng ta chỉ có thể đặt các đối số từ khóa ở bất kỳ vị trí nào sau các đối số vị trí

Các hàm lambda luôn được thực thi giống như các biểu thức hàm được gọi ngay lập tức [IIFE] trong JavaScript. Điều này chủ yếu được sử dụng với trình thông dịch Python, như trong ví dụ sau

#filter function
numbers = [11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
def multiples_of_three[x]:
        return x % 3 == 0

print[list[filter[multiples_of_three, numbers]]]
>>>>
[12, 15, 18]
1

Đối tượng hàm lambda được bao bọc trong dấu ngoặc đơn và một cặp dấu ngoặc đơn khác theo sát với các đối số được truyền. Là một IIFE, biểu thức được đánh giá và hàm trả về một giá trị được gán cho biến

Các hàm lambda của Python cũng có thể được thực thi trong phạm vi hiểu danh sách. Việc hiểu danh sách luôn có biểu thức đầu ra, được thay thế bằng hàm lambda. Dưới đây là một số ví dụ

#map function
names = ['Clint', 'Lisa', 'Asake', 'Ada']

greet_all = list[map[greet, names]]
print[greet_all]
>>>>
['Hello Clint', 'Hello Lisa', 'Hello Asake', 'Hello Ada']
0

#map function
names = ['Clint', 'Lisa', 'Asake', 'Ada']

greet_all = list[map[greet, names]]
print[greet_all]
>>>>
['Hello Clint', 'Hello Lisa', 'Hello Asake', 'Hello Ada']
1

Các hàm lambda có thể được sử dụng khi viết các biểu thức bậc ba trong Python. Một biểu thức bậc ba đưa ra một kết quả dựa trên một điều kiện nhất định. Kiểm tra các ví dụ dưới đây

#map function
names = ['Clint', 'Lisa', 'Asake', 'Ada']

greet_all = list[map[greet, names]]
print[greet_all]
>>>>
['Hello Clint', 'Hello Lisa', 'Hello Asake', 'Hello Ada']
2

#map function
names = ['Clint', 'Lisa', 'Asake', 'Ada']

greet_all = list[map[greet, names]]
print[greet_all]
>>>>
['Hello Clint', 'Hello Lisa', 'Hello Asake', 'Hello Ada']
3

Các hàm lambda trong các hàm bậc cao hơn

Khái niệm hàm bậc cao phổ biến trong Python, cũng như trong các ngôn ngữ khác. Chúng là các hàm chấp nhận các hàm khác làm đối số và cũng trả về các hàm dưới dạng đầu ra

Trong Python, một hàm bậc cao hơn có hai đối số. một chức năng, và một iterable. Đối số hàm được áp dụng cho từng mục trong đối tượng có thể lặp lại. Vì chúng ta có thể chuyển một hàm làm đối số cho một hàm bậc cao hơn, nên chúng ta cũng có thể chuyển một hàm lambda như nhau

Dưới đây là một số ví dụ về hàm lambda được sử dụng với hàm

#filter function
numbers = [11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
def multiples_of_three[x]:
        return x % 3 == 0

print[list[filter[multiples_of_three, numbers]]]
>>>>
[12, 15, 18]
2

#map function
names = ['Clint', 'Lisa', 'Asake', 'Ada']

greet_all = list[map[greet, names]]
print[greet_all]
>>>>
['Hello Clint', 'Hello Lisa', 'Hello Asake', 'Hello Ada']
4

#map function
names = ['Clint', 'Lisa', 'Asake', 'Ada']

greet_all = list[map[greet, names]]
print[greet_all]
>>>>
['Hello Clint', 'Hello Lisa', 'Hello Asake', 'Hello Ada']
5

Dưới đây là một số hàm lambda được sử dụng với hàm

#filter function
numbers = [11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
def multiples_of_three[x]:
        return x % 3 == 0

print[list[filter[multiples_of_three, numbers]]]
>>>>
[12, 15, 18]
3

#map function
names = ['Clint', 'Lisa', 'Asake', 'Ada']

greet_all = list[map[greet, names]]
print[greet_all]
>>>>
['Hello Clint', 'Hello Lisa', 'Hello Asake', 'Hello Ada']
6

#map function
names = ['Clint', 'Lisa', 'Asake', 'Ada']

greet_all = list[map[greet, names]]
print[greet_all]
>>>>
['Hello Clint', 'Hello Lisa', 'Hello Asake', 'Hello Ada']
7

Dưới đây là một số hàm lambda được sử dụng với hàm

#filter function
numbers = [11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
def multiples_of_three[x]:
        return x % 3 == 0

print[list[filter[multiples_of_three, numbers]]]
>>>>
[12, 15, 18]
6

#map function
names = ['Clint', 'Lisa', 'Asake', 'Ada']

greet_all = list[map[greet, names]]
print[greet_all]
>>>>
['Hello Clint', 'Hello Lisa', 'Hello Asake', 'Hello Ada']
8

#map function
names = ['Clint', 'Lisa', 'Asake', 'Ada']

greet_all = list[map[greet, names]]
print[greet_all]
>>>>
['Hello Clint', 'Hello Lisa', 'Hello Asake', 'Hello Ada']
9

Sự kết luận

Mặc dù lambdas Python có thể giảm đáng kể số lượng dòng mã bạn viết, nhưng chúng nên được sử dụng một cách tiết kiệm và chỉ khi cần thiết. Khả năng đọc mã của bạn nên được ưu tiên hơn tính đồng nhất. Để có mã dễ đọc hơn, hãy luôn sử dụng một hàm bình thường phù hợp với các hàm lambda, theo khuyến nghị của Hướng dẫn về kiểu dáng Python

Lambdas có thể rất hữu ích với các biểu thức bậc ba của Python, nhưng một lần nữa, hãy cố gắng không hy sinh khả năng đọc. Các hàm lambda thực sự phát huy tác dụng của chúng khi các hàm bậc cao hơn đang được sử dụng

Tóm tắt

  • Python lambdas rất tốt để viết các hàm một lớp
  • Chúng cũng được sử dụng cho IIFE [biểu thức hàm được gọi ngay lập tức]
  • Lambdas không nên được sử dụng khi có nhiều biểu thức, vì nó làm cho mã không thể đọc được
  • Python là ngôn ngữ lập trình hướng đối tượng, nhưng lambdas là một cách tốt để khám phá lập trình chức năng trong Python

Nội dung liên quan

  • Tìm hiểu về Trình trang trí Python, với các ví dụ
  • Khóa học. Học lập trình cơ bản với Python
  • Xu hướng trong Python. Có gì hấp dẫn trong ngôn ngữ nóng nhất hiện nay
  • 5 vấn đề phổ biến mà người mới bắt đầu Python gặp phải
  • Làm thế nào bốn lập trình viên có được công việc Python đầu tiên của họ

Chia sẻ bài viết này

ban đầu Arthur

Ini là một người đam mê khởi nghiệp, kỹ sư phần mềm và nhà văn kỹ thuật. Flutter và Django là những công cụ yêu thích của anh ấy tại thời điểm này để xây dựng các giải pháp phần mềm. Anh ấy yêu nhạc Afrobeats

Hàm lambda trong Python với ví dụ là gì?

Hàm Lambda trong Python là gì? . e. , được xác định không có tên] có thể nhận bất kỳ số lượng đối số nào, nhưng không giống như các hàm thông thường, chỉ đánh giá và trả về một biểu thức an anonymous function [i.e., defined without a name] that can take any number of arguments but, unlike normal functions, evaluates and returns only one expression .

Hàm lambda dùng để làm gì?

Lambda chạy mã của bạn trên cơ sở hạ tầng điện toán có độ sẵn sàng cao và thực hiện tất cả công việc quản trị tài nguyên điện toán, bao gồm bảo trì máy chủ và hệ điều hành, cung cấp dung lượng và tự động thay đổi quy mô cũng như ghi nhật ký

Chủ Đề