Trăn Lambda

Khi tôi lần đầu tiên bắt gặp các hàm lambda trong python, tôi đã rất lo lắng và nghĩ rằng chúng dành cho những người học Python nâng cao. Hướng dẫn về python cho người mới bắt đầu hoan nghênh ngôn ngữ này vì cú pháp dễ đọc của nó, nhưng chắc chắn lambdas có vẻ không thân thiện với người dùng

Tuy nhiên, khi tôi đã hiểu cú pháp chung và kiểm tra một số trường hợp sử dụng đơn giản, việc sử dụng chúng sẽ bớt đáng sợ hơn

cú pháp

Nói một cách đơn giản, hàm lambda cũng giống như bất kỳ hàm python bình thường nào, ngoại trừ việc nó không có tên khi định nghĩa và nó được chứa trong một dòng mã

lambda argument[s]: expression

Hàm lambda đánh giá một biểu thức cho một đối số đã cho. Bạn cung cấp cho hàm một giá trị [đối số] và sau đó cung cấp thao tác [biểu thức]. Từ khóa

#Normal python function
def a_name[x]:
return x+x
#Lambda function
lambda x: x+x
5 phải đứng đầu. Dấu hai chấm đầy đủ [. ] ngăn cách đối số và biểu thức

Trong mã ví dụ bên dưới, x là đối số và x+x là biểu thức

#Normal python function
def a_name[x]:
return x+x
#Lambda function
lambda x: x+x

Trước khi chúng ta đi vào các ứng dụng thực tế, hãy đề cập đến một số kỹ thuật về những gì cộng đồng python nghĩ là tốt và xấu với các hàm lambda

ưu

  • Tốt cho các hoạt động logic đơn giản. Điều này cũng làm cho mã dễ đọc hơn
  • Tốt khi bạn muốn một chức năng mà bạn sẽ chỉ sử dụng một lần

Nhược điểm

  • Họ chỉ có thể thực hiện một biểu thức. Không thể có nhiều hoạt động độc lập trong một hàm lambda
  • Không phù hợp với các hoạt động kéo dài nhiều hơn một dòng trong một hàm
    #Normal python function
    def a_name[x]:
    return x+x
    #Lambda function
    lambda x: x+x
    6 bình thường [Ví dụ: các hoạt động có điều kiện lồng nhau];. Nếu bạn cần một hoặc hai phút để hiểu mã, thay vào đó hãy sử dụng hàm có tên
  • Xấu vì bạn không thể viết một chuỗi tài liệu để giải thích tất cả các đầu vào, thao tác và đầu ra như bạn làm trong một hàm
    #Normal python function
    def a_name[x]:
    return x+x
    #Lambda function
    lambda x: x+x
    6 bình thường

Ở cuối bài viết này, chúng ta sẽ xem xét các ví dụ về mã thường được sử dụng trong đó hàm Lambda không được khuyến khích mặc dù chúng có vẻ hợp pháp

Nhưng trước tiên, hãy xem xét các tình huống khi sử dụng hàm lambda. Lưu ý rằng chúng tôi sử dụng các hàm lambda rất nhiều với các lớp python nhận một hàm làm đối số, ví dụ: map[] và filter[]. Chúng còn được gọi là các hàm bậc cao hơn

1. giá trị vô hướng

Đây là khi bạn thực thi hàm lambda trên một giá trị

[lambda x: x*2][12]###Results
24

Trong đoạn mã trên, hàm đã được tạo và sau đó được thực thi ngay lập tức. Đây là một ví dụ về biểu thức hàm được gọi ngay lập tức hoặc IIFE

2. danh sách

Lọc[]. Đây là thư viện sẵn có của Python chỉ trả về những giá trị phù hợp với tiêu chí nhất định. Cú pháp là

#Normal python function
def a_name[x]:
return x+x
#Lambda function
lambda x: x+x
. Iterable có thể là bất kỳ trình tự nào, chẳng hạn như đối tượng danh sách, tập hợp hoặc chuỗi [thêm bên dưới]

Ví dụ dưới đây lọc một danh sách cho

#Normal python function
def a_name[x]:
return x+x
#Lambda function
lambda x: x+x
9 số. Lưu ý rằng hàm bộ lọc trả về một 'Đối tượng bộ lọc' và bạn cần đóng gói nó bằng một danh sách để trả về các giá trị

________số 8

Bản đồ[]. Đây là một thư viện python tích hợp khác với cú pháp

[lambda x: x*2][12]###Results
24

Điều này trả về một danh sách đã sửa đổi trong đó mọi giá trị trong danh sách ban đầu đã được thay đổi dựa trên một hàm. Ví dụ dưới đây chia khối mọi số trong danh sách

#Normal python function
def a_name[x]:
return x+x
#Lambda function
lambda x: x+x
0

3. đối tượng sê-ri

Đối tượng Sê-ri là một cột trong khung dữ liệu hay nói cách khác là một chuỗi các giá trị có chỉ số tương ứng. Các hàm lambda có thể được sử dụng để thao tác các giá trị trong khung dữ liệu Pandas

Hãy tạo một khung dữ liệu giả về các thành viên trong một gia đình

#Normal python function
def a_name[x]:
return x+x
#Lambda function
lambda x: x+x
1

Lambda với hàm Apply[] của Pandas. Hàm này áp dụng một thao tác cho mọi phần tử của cột

Để có được tuổi hiện tại của mỗi thành viên, chúng tôi đã trừ đi năm sinh của họ từ năm hiện tại. Trong hàm lambda bên dưới, x tham chiếu đến một giá trị trong cột năm sinh và biểu thức là

[lambda x: x*2][12]###Results
24
1

#Normal python function
def a_name[x]:
return x+x
#Lambda function
lambda x: x+x
3

Lambda với hàm Filter[] của Python. Điều này có 2 đối số; . Nó trả về một danh sách các giá trị thỏa mãn điều kiện

#Normal python function
def a_name[x]:
return x+x
#Lambda function
lambda x: x+x
4

Lambda với hàm Map[] của Pandas. Bản đồ hoạt động rất giống với apply[] ở chỗ nó sửa đổi các giá trị của một cột dựa trên biểu thức

#Normal python function
def a_name[x]:
return x+x
#Lambda function
lambda x: x+x
5

Chúng tôi cũng có thể thực hiện các hoạt động có điều kiện trả về các giá trị khác nhau dựa trên các tiêu chí nhất định

Mã bên dưới trả về 'Nam' nếu giá trị Trạng thái là cha hoặc con trai và trả về 'Nữ' nếu không. Lưu ý rằng

[lambda x: x*2][12]###Results
24
2 và
[lambda x: x*2][12]###Results
24
3 có thể hoán đổi cho nhau trong ngữ cảnh này

#Normal python function
def a_name[x]:
return x+x
#Lambda function
lambda x: x+x
8

4. Lambda trên đối tượng Dataframe

Tôi chủ yếu sử dụng các hàm Lambda trên các cột cụ thể [đối tượng chuỗi] thay vì toàn bộ khung dữ liệu, trừ khi tôi muốn sửa đổi toàn bộ khung dữ liệu bằng một biểu thức

Ví dụ: làm tròn tất cả các giá trị đến 1 chữ số thập phân, trong trường hợp này tất cả các cột phải là kiểu dữ liệu float hoặc int vì round[] không thể hoạt động trên chuỗi

#Normal python function
def a_name[x]:
return x+x
#Lambda function
lambda x: x+x
0

Trong ví dụ dưới đây, chúng tôi sử dụng áp dụng trên khung dữ liệu và chọn các cột để sửa đổi trong hàm Lambda. Lưu ý rằng chúng ta phải sử dụng

[lambda x: x*2][12]###Results
24
4 ở đây để biểu thức được áp dụng theo cột

#Normal python function
def a_name[x]:
return x+x
#Lambda function
lambda x: x+x
1

Trường hợp sử dụng không được khuyến khích

  1. Gán tên cho hàm Lambda. Điều này không được khuyến khích trong hướng dẫn kiểu python PEP8 vì Lambda tạo một chức năng ẩn danh không có nghĩa là được lưu trữ. Thay vào đó, hãy sử dụng hàm
    #Normal python function
    def a_name[x]:
    return x+x
    #Lambda function
    lambda x: x+x
    6 bình thường nếu bạn muốn lưu trữ hàm để sử dụng lại
#Normal python function
def a_name[x]:
return x+x
#Lambda function
lambda x: x+x
2

2. Truyền hàm bên trong hàm Lambda. Việc sử dụng các hàm như

[lambda x: x*2][12]###Results
24
6 chỉ nhận một đối số số là không cần thiết với Lambda vì bạn có thể chuyển trực tiếp hàm vào map[] hoặc apply[] .

#Normal python function
def a_name[x]:
return x+x
#Lambda function
lambda x: x+x
3

Lý tưởng nhất là các hàm bên trong các hàm lambda nên có hai đối số trở lên. Ví dụ là

[lambda x: x*2][12]###Results
24
7 và
[lambda x: x*2][12]###Results
24
8 Bạn có thể thử nghiệm với nhiều hàm python tích hợp khác nhau để xem hàm nào cần hàm Lambda trong ngữ cảnh này. Tôi đã làm như vậy trong sổ ghi chép này

3. Sử dụng các hàm Lambda khi nhiều dòng mã dễ đọc hơn. Một ví dụ là khi bạn đang sử dụng câu lệnh if-else bên trong hàm lambda. Tôi đã sử dụng ví dụ dưới đây trước đó trong bài viết này

#Normal python function
def a_name[x]:
return x+x
#Lambda function
lambda x: x+x
8

Kết quả tương tự có thể đạt được với mã dưới đây. Tôi thích cách này hơn vì bạn có thể có vô số điều kiện và mã đủ đơn giản để làm theo. Thông tin thêm về các điều kiện vector hóa tại đây

Sự kết luận

Nhiều lập trình viên không thích Lambdas thường lập luận rằng bạn có thể thay thế chúng bằng cách hiểu danh sách, hàm tích hợp và thư viện chuẩn dễ hiểu hơn. Các biểu thức trình tạo [tương tự như hiểu danh sách] cũng là các lựa chọn thay thế hữu ích cho các hàm map[] và filter[]

Cho dù bạn có quyết định sử dụng các hàm Lambda trong mã của mình hay không, bạn cần hiểu chúng là gì và chúng được sử dụng như thế nào vì chắc chắn bạn sẽ bắt gặp chúng trong mã của người khác

Lambda trong Python 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 .

Tại sao lambda được sử 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ó tính sẵn sàng cao và thực hiện tất cả việc quản trị tài nguyên điện toán của bạn . Điều này bao gồm bảo trì máy chủ và hệ điều hành, cung cấp năng lực và tự động mở rộng quy mô, triển khai bản vá bảo mật và mã cũng như giám sát và ghi nhật ký mã.

Hàm lambda trong Python là gì?

Hàm Lambda trong Python là gì? . Đây là một chức năng nhỏ và hạn chế không có nhiều hơn một dòng. Giống như hàm thông thường, hàm Lambda có thể có nhiều đối số với một biểu thức. an anonymous function or a function having no name. It is a small and restricted function having no more than one line. Just like a normal function, a Lambda function can have multiple arguments with one expression.

Lợi ích của lambda trong Python là gì?

Từ khóa lambda trong Python cung cấp lối tắt để khai báo các hàm ẩn danh nhỏ . Các hàm lambda hoạt động giống như các hàm thông thường được khai báo bằng từ khóa def. Chúng có thể được sử dụng bất cứ khi nào các đối tượng chức năng được yêu cầu.

Chủ Đề