Bạn có thể có bao nhiêu hàm lambda trong python?

Các tài khoản AWS mới đã giảm hạn ngạch bộ nhớ và xử lý đồng thời. AWS tự động tăng các hạn mức này dựa trên mức sử dụng của bạn. Bạn cũng có thể yêu cầu tăng hạn ngạch

Tính toán và lưu trữ

Lambda đặt hạn ngạch cho lượng tài nguyên điện toán và lưu trữ mà bạn có thể sử dụng để chạy và lưu trữ các chức năng. Các hạn ngạch sau áp dụng cho mỗi Khu vực AWS và có thể tăng lên. Để biết thêm thông tin, hãy xem Yêu cầu tăng hạn ngạch trong Hướng dẫn sử dụng hạn ngạch dịch vụ

Để biết chi tiết về đồng thời và cách Lambda thay đổi quy mô đồng thời chức năng của bạn để đáp ứng với lưu lượng truy cập, hãy xem Thay đổi quy mô chức năng của Lambda

Cấu hình chức năng, triển khai và thực thi

Các hạn ngạch sau áp dụng cho cấu hình, triển khai và thực thi chức năng. Chúng không thể thay đổi

Tài liệu Lambda, thông điệp bản ghi và bảng điều khiển sử dụng chữ viết tắt MB [chứ không phải MiB] để chỉ 1024 KB

Hạn ngạch tài nguyên

Chức năng cấp phát bộ nhớ

128 MB đến 10.240 MB, với gia số 1 MB

Ghi chú. Lambda phân bổ sức mạnh CPU theo tỷ lệ dung lượng bộ nhớ được định cấu hình. Bạn có thể tăng hoặc giảm bộ nhớ và công suất CPU được phân bổ cho chức năng của mình bằng cách sử dụng cài đặt Bộ nhớ [MB]. Với 1.769 MB, một chức năng tương đương với một vCPU

thời gian chờ chức năng

900 giây [15 phút]

Biến môi trường chức năng

4 KB, tổng hợp cho tất cả các biến môi trường được liên kết với hàm

Chính sách dựa trên tài nguyên chức năng

20KB

các lớp chức năng

năm lớp

Chức năng bùng nổ đồng thời

500 - 3000 [thay đổi theo khu vực]

Tải trọng yêu cầu [yêu cầu và phản hồi]

6 MB mỗi yêu cầu và phản hồi [đồng bộ]

256 KB [không đồng bộ]

Gói triển khai [. kích thước kho lưu trữ tệp zip]

50 MB [đã nén, để tải lên trực tiếp]

250 MB [đã giải nén]

Hạn ngạch này áp dụng cho tất cả các tệp bạn tải lên, bao gồm các lớp và thời gian chạy tùy chỉnh

3 MB [trình chỉnh sửa bảng điều khiển]

Kích thước cài đặt hình ảnh vùng chứa

16KB

Kích thước gói mã hình ảnh vùng chứa

10 GB

Sự kiện thử nghiệm [trình chỉnh sửa bảng điều khiển]

10

Lưu trữ thư mục

Using def:  25
9

Từ 512 MB đến 10.240 MB, với gia số 1 MB

bộ mô tả tệp

1.024

Quy trình/luồng thực thi

1.024

Yêu cầu API Lambda

Các hạn ngạch sau được liên kết với các yêu cầu API Lambda

Hạn ngạch tài nguyên

Yêu cầu gọi cho mỗi chức năng trên mỗi Vùng [đồng bộ]

Mỗi phiên bản của môi trường thực thi của bạn có thể phục vụ tối đa 10 yêu cầu mỗi giây. Nói cách khác, tổng giới hạn lệnh gọi gấp 10 lần giới hạn đồng thời của bạn. Xem thay đổi tỷ lệ hàm Lambda

Yêu cầu gọi cho mỗi chức năng trên mỗi Vùng [không đồng bộ]

Mỗi phiên bản của môi trường thực thi của bạn có thể phục vụ số lượng yêu cầu không giới hạn. Nói cách khác, tổng giới hạn gọi chỉ dựa trên đồng thời có sẵn cho chức năng của bạn. Xem thay đổi tỷ lệ hàm Lambda

Yêu cầu gọi trên mỗi phiên bản chức năng hoặc bí danh [yêu cầu mỗi giây]

10 x đồng thời được cung cấp được phân bổ

Hạn ngạch này chỉ áp dụng cho các chức năng sử dụng đồng thời được cung cấp

Yêu cầu API GetFunction

100 yêu cầu mỗi giây

Yêu cầu API GetPolicy

15 yêu cầu mỗi giây

Phần còn lại của các yêu cầu API của mặt phẳng điều khiển [không bao gồm yêu cầu gọi, GetFunction và GetPolicy]

15 yêu cầu mỗi giây

Các dịch vụ khác

Hạn ngạch cho các dịch vụ khác, chẳng hạn như AWS Identity and Access Management [IAM], Amazon CloudFront [Lambda@Edge] và Amazon Virtual Private Cloud [Amazon VPC], có thể ảnh hưởng đến các chức năng Lambda của bạn. Để biết thêm thông tin, hãy xem Định mức dịch vụ AWS trong Tham khảo chung về dịch vụ web của Amazon và Sử dụng AWS Lambda với các dịch vụ khác

Hàm Lambda, còn được gọi là 'Hàm ẩn danh' giống như hàm python thông thường nhưng có thể được xác định mà không cần tên

1. Hàm Lambda trong Python là gì?

Hàm Lambda, còn được gọi là 'Hàm ẩn danh' giống như hàm python thông thường nhưng có thể được xác định mà không cần tên. Trong khi các chức năng bình thường được xác định bằng từ khóa

# calculate squares using def
def squares_def[x]:
    return x*x
print['Using def: ', squares_def[5]]
8, các chức năng ẩn danh được xác định bằng từ khóa
# calculate squares using def
def squares_def[x]:
    return x*x
print['Using def: ', squares_def[5]]
9. Tuy nhiên, chúng bị giới hạn trong một dòng biểu thức. Chúng có thể nhận nhiều tham số như trong các hàm thông thường

2. Cú pháp hàm Lambda

Cú pháp cho hàm

# calculate squares using def
def squares_def[x]:
    return x*x
print['Using def: ', squares_def[5]]
9 được đưa ra bởi.
Using def:  25
1 Lưu ý, có thể có bất kỳ số lượng đối số nào nhưng chỉ có thể chứa một biểu thức duy nhất. Không có câu lệnh
Using def:  25
2 thường có trong cú pháp hàm
# calculate squares using def
def squares_def[x]:
    return x*x
print['Using def: ', squares_def[5]]
8. Hàm sẽ chỉ trả về giá trị biểu thức ngay cả khi không có câu lệnh
Using def:  25
2

nội dung

  1. Hàm Lambda trong Python là gì?
  2. Cú pháp hàm Lambda
  3. Cần các hàm Lambda
  4. Cách sử dụng hàm lambda. Ví dụ đơn giản
  5. Bên trong, cả hai hàm lambda và def đều hoạt động giống hệt nhau
  6. Các hàm lambda có thể có 0 hoặc 1 biểu thức, không nhiều hơn
  7. Hàm Lambda có thể được gọi ngay lập tức
  8. Có thể viết các hàm bậc cao hơn bằng lambda
  9. Các hàm lambda chấp nhận tất cả các loại đối số, giống như hàm def bình thường
  10. Bạn có thể sử dụng chức năng
    # calculate squares using def
    def squares_def[x]:
        return x*x
    print['Using def: ', squares_def[5]]
    
    9 trong
    Using def:  25
    
    6
  11. Bạn có thể sử dụng chức năng
    # calculate squares using def
    def squares_def[x]:
        return x*x
    print['Using def: ', squares_def[5]]
    
    9 trong
    Using def:  25
    
    8
  12. Bạn cũng có thể sử dụng chức năng
    # calculate squares using def
    def squares_def[x]:
        return x*x
    print['Using def: ', squares_def[5]]
    
    9 trong
    # calculate squares using def
    def squares_def[x]:
        return x*x
    print['Using def: ', squares_def[5]]
    
    20
  13. Cách sử dụng hàm lambda để thao tác Dataframe
  14. Phần kết luận

3. Cần các hàm Lambda

Có ít nhất 3 lý do

    1. Các hàm lambda giảm số lượng dòng mã khi so sánh với hàm python thông thường được xác định bằng từ khóa
      # calculate squares using def
      def squares_def[x]:
          return x*x
      print['Using def: ', squares_def[5]]
      
      8. Nhưng điều này không hoàn toàn đúng bởi vì, ngay cả các hàm được định nghĩa bằng
      # calculate squares using def
      def squares_def[x]:
          return x*x
      print['Using def: ', squares_def[5]]
      
      8 cũng có thể được định nghĩa trong một dòng duy nhất. Nhưng nói chung, các hàm
      # calculate squares using def
      def squares_def[x]:
          return x*x
      print['Using def: ', squares_def[5]]
      
      8 được viết trong hơn 1 dòng
    2. Chúng thường được sử dụng khi tạm thời cần một chức năng trong thời gian ngắn, thường được sử dụng bên trong một chức năng khác, chẳng hạn như
      # calculate squares using def
      def squares_def[x]:
          return x*x
      print['Using def: ', squares_def[5]]
      
      24 ,
      # calculate squares using def
      def squares_def[x]:
          return x*x
      print['Using def: ', squares_def[5]]
      
      25 and
      # calculate squares using def
      def squares_def[x]:
          return x*x
      print['Using def: ', squares_def[5]]
      
      26.
    3. Sử dụng hàm lambda, bạn có thể định nghĩa một hàm và gọi nó ngay khi kết thúc định nghĩa. Điều này không thể thực hiện được với các hàm
      # calculate squares using def
      def squares_def[x]:
          return x*x
      print['Using def: ', squares_def[5]]
      
      8 .

Hãy xem thêm về cách triển khai chúng trong python

4. Cách sử dụng hàm lambda. Ví dụ đơn giản

Bạn không cần chỉ định tên cho hàm như đã thảo luận ở trên về cú pháp của hàm

# calculate squares using def
def squares_def[x]:
    return x*x
print['Using def: ', squares_def[5]]
9. Hãy thử xác định một hàm để tính bình phương của các giá trị đã cho

# calculate squares using def
def squares_def[x]:
    return x*x
print['Using def: ', squares_def[5]]
1
# calculate squares using def
def squares_def[x]:
    return x*x
print['Using def: ', squares_def[5]]
2

Chúng ta cũng hãy xem cách thực hiện chức năng tương tự bằng cách sử dụng từ khóa

# calculate squares using def
def squares_def[x]:
    return x*x
print['Using def: ', squares_def[5]]
8 và so sánh chúng

# calculate squares using def
def squares_def[x]:
    return x*x
print['Using def: ', squares_def[5]]

đầu ra

Using def:  25

Làm tương tự trong một dòng

# calculate squares using def
def squares_def[x]:
    return x*x
print['Using def: ', squares_def[5]]
2____3

Thấy rằng trong khi sử dụng từ khóa

# calculate squares using def
def squares_def[x]:
    return x*x
print['Using def: ', squares_def[5]]
8, chúng tôi đang trả về một giá trị nhất định
Using def:  25
1. Trong trường hợp hàm
# calculate squares using def
def squares_def[x]:
    return x*x
print['Using def: ', squares_def[5]]
9, biểu thức
Using def:  25
1 sẽ được trả về mà không cần viết câu lệnh trả về rõ ràng. Nói chung trong sử dụng thông thường, không có nhiều khác biệt khi sử dụng từ khóa
# calculate squares using def
def squares_def[x]:
    return x*x
print['Using def: ', squares_def[5]]
8 và
# calculate squares using def
def squares_def[x]:
    return x*x
print['Using def: ', squares_def[5]]
9. Trên thực tế, cả hai đều có chức năng. Hãy xem các loại của họ

Using def:  25
4
Using def:  25
5

Cả hai đều thuộc lớp

Using def:  25
6

5. Bên trong, cả hai hàm lambda và def đều hoạt động giống hệt nhau

Để kiểm tra cách chúng hoạt động bên trong, hãy sử dụng từ khóa

Using def:  25
7. Từ khóa
Using def:  25
7 sẽ hiển thị phiên bản mã byte python có thể đọc được cho phép kiểm tra hướng dẫn

Using def:  25
9
Using def:  25
0

Mã byte cho chức năng `def` thông thường

# calculate squares using def
def squares_def[x]:
    return x*x
print['Using def: ', squares_def[5]]
20
Using def:  25
0

Xem rằng quy trình được thực hiện bởi cả hai chức năng là hoàn toàn giống nhau. Vì vậy, không có sự khác biệt thực sự trong cách họ thực hiện.  

6. Các hàm lambda có thể có 0 hoặc 1 biểu thức, không nhiều hơn

  1. Không có biểu hiện. không chứa biểu thức nào, sẽ cho kết quả giống nhau cho tất cả các đối số
# calculate squares using def
def squares_def[x]:
    return x*x
print['Using def: ', squares_def[5]]
22

đầu ra

Nhận khóa học Python hoàn chỉnh miễn phí

Đối mặt với tình huống tương tự như những người khác?

Xây dựng sự nghiệp khoa học dữ liệu của bạn với bằng cấp được ngành công nhận trên toàn cầu. Có được tư duy, sự tự tin và các kỹ năng khiến Nhà khoa học dữ liệu trở nên có giá trị

Nhận khóa học Python miễn phí

Nhận khóa học Python hoàn chỉnh miễn phí

Xây dựng sự nghiệp khoa học dữ liệu của bạn với bằng cấp được ngành công nhận trên toàn cầu. Có được tư duy, sự tự tin và các kỹ năng khiến Nhà khoa học dữ liệu trở nên có giá trị

Nhận khóa học Python miễn phí

# calculate squares using def
def squares_def[x]:
    return x*x
print['Using def: ', squares_def[5]]
23
  1. Biểu thức đơn. Chúng có thể chứa một biểu thức hoặc không có biểu thức nào. Chúng ta không thể đặt nhiều hơn một biểu thức trong hàm lambda
# calculate squares using def
def squares_def[x]:
    return x*x
print['Using def: ', squares_def[5]]
24
# calculate squares using def
def squares_def[x]:
    return x*x
print['Using def: ', squares_def[5]]
25

7. Hàm Lambda có thể được gọi ngay lập tức

Bạn có thể triển khai hàm lambda mà không cần sử dụng tên biến. Bạn cũng có thể chuyển trực tiếp các giá trị đối số vào hàm

# calculate squares using def
def squares_def[x]:
    return x*x
print['Using def: ', squares_def[5]]
9 ngay sau khi xác định nó bằng cách sử dụng dấu ngoặc đơn. Điều này không thể được thực hiện bằng cách sử dụng các hàm
# calculate squares using def
def squares_def[x]:
    return x*x
print['Using def: ', squares_def[5]]
8

# calculate squares using def
def squares_def[x]:
    return x*x
print['Using def: ', squares_def[5]]
26

Điều này không hoạt động với chức năng

# calculate squares using def
def squares_def[x]:
    return x*x
print['Using def: ', squares_def[5]]
8

# calculate squares using def
def squares_def[x]:
    return x*x
print['Using def: ', squares_def[5]]
27

8. Có thể viết các hàm bậc cao hơn bằng lambda

Một hàm lambda có thể lấy một hàm khác làm đối số. Hãy xem ví dụ về hàm lambda lồng nhau, hàm lambda bên trong hàm lambda khác

# calculate squares using def
def squares_def[x]:
    return x*x
print['Using def: ', squares_def[5]]
28

Thấy rằng tôi đã chuyển một hàm lambda khác để tính bình phương làm đối số cho biến

Using def:  25
42 func

9. Các hàm lambda chấp nhận tất cả các loại đối số, giống như hàm def bình thường

Hàm

# calculate squares using def
def squares_def[x]:
    return x*x
print['Using def: ', squares_def[5]]
9 hỗ trợ tất cả các loại đối số giống như hàm
# calculate squares using def
def squares_def[x]:
    return x*x
print['Using def: ', squares_def[5]]
8 bình thường. 1. Đối số từ khóa.
Using def:  25
45 là một đối số đứng trước một mã định danh [e. g. name=] trong một lệnh gọi hàm. Đối số được đặt tên. Ví dụ

# calculate squares using def
def squares_def[x]:
    return x*x
print['Using def: ', squares_def[5]]
29

Danh sách biến của các đối số. Ví dụ

# calculate squares using def
def squares_def[x]:
    return x*x
print['Using def: ', squares_def[5]]
0

Danh sách biến của các đối số từ khóa. Ví dụ

# calculate squares using def
def squares_def[x]:
    return x*x
print['Using def: ', squares_def[5]]
1

2. đối số vị trí.

Using def:  25
46 là một đối số không phải là đối số từ khóa

# calculate squares using def
def squares_def[x]:
    return x*x
print['Using def: ', squares_def[5]]
2

10. Bạn có thể sử dụng chức năng
# calculate squares using def
def squares_def[x]:
    return x*x
print['Using def: ', squares_def[5]]
9 trong
Using def:  25
6

Hàm

Using def:  25
6 được sử dụng để lọc một đối tượng có thể lặp lại nhất định [danh sách giống như đối tượng] bằng cách sử dụng một hàm khác xác định logic lọc. Hàm lambda thường được sử dụng để xác định logic lọc và được chuyển thành đối số đầu tiên của
Using def:  25
6. Một iterable giống như một đối tượng danh sách được truyền dưới dạng đối số thứ hai cho hàm
# calculate squares using def
def squares_def[x]:
    return x*x
print['Using def: ', squares_def[5]]
24

# calculate squares using def
def squares_def[x]:
    return x*x
print['Using def: ', squares_def[5]]
3

11. Bạn có thể sử dụng chức năng
# calculate squares using def
def squares_def[x]:
    return x*x
print['Using def: ', squares_def[5]]
9 trong
Using def:  25
8

Hàm ________ 38 áp dụng một hàm đã cho cho tất cả các mục trong danh sách và trả về kết quả. Tương tự như

Using def:  25
6, chỉ cần chuyển hàm lambda và danh sách [hoặc bất kỳ có thể lặp lại nào, như tuple] làm đối số

# calculate squares using def
def squares_def[x]:
    return x*x
print['Using def: ', squares_def[5]]
4

12. Bạn cũng có thể sử dụng chức năng
# calculate squares using def
def squares_def[x]:
    return x*x
print['Using def: ', squares_def[5]]
9 trong
# calculate squares using def
def squares_def[x]:
    return x*x
print['Using def: ', squares_def[5]]
20

Hàm

# calculate squares using def
def squares_def[x]:
    return x*x
print['Using def: ', squares_def[5]]
20 thực hiện thao tác lặp lại trên các cặp phần tử trong danh sách. Truyền hàm
# calculate squares using def
def squares_def[x]:
    return x*x
print['Using def: ', squares_def[5]]
9 và danh sách làm đối số cho hàm
# calculate squares using def
def squares_def[x]:
    return x*x
print['Using def: ', squares_def[5]]
20. Để sử dụng hàm
# calculate squares using def
def squares_def[x]:
    return x*x
print['Using def: ', squares_def[5]]
20, bạn cần nhập
# calculate squares using def
def squares_def[x]:
    return x*x
print['Using def: ', squares_def[5]]
26 từ thư viện
Using def:  25
93

# calculate squares using def
def squares_def[x]:
    return x*x
print['Using def: ', squares_def[5]]
5

Thấy rằng hàm

# calculate squares using def
def squares_def[x]:
    return x*x
print['Using def: ', squares_def[5]]
20 lặp đi lặp lại trên các phần tử trong danh sách.
Using def:  25
95, v.v.

13. Cách sử dụng hàm lambda để thao tác Dataframe

Bạn cũng có thể thao tác các cột của khung dữ liệu bằng hàm

# calculate squares using def
def squares_def[x]:
    return x*x
print['Using def: ', squares_def[5]]
9. Đó là một ứng cử viên tuyệt vời để sử dụng bên trong phương thức
Using def:  25
97 của khung dữ liệu. Tôi sẽ cố gắng thêm một hàng mới vào khung dữ liệu trong phần này làm ví dụ

# calculate squares using def
def squares_def[x]:
    return x*x
print['Using def: ', squares_def[5]]
6

FirstSecondThirdForth012361456120

Khi được sử dụng với

Using def:  25
98, nó áp dụng hàm lambda cho mọi phần tử của khung dữ liệu

# calculate squares using def
def squares_def[x]:
    return x*x
print['Using def: ', squares_def[5]]
7

FirstSecondThirdForth014936116253614400

Phần kết luận

Hy vọng bạn đã rõ hàm lambda là gì và cách bạn có thể sử dụng nó trong các tình huống khác nhau. Hãy thử các bài tập sau để kiểm tra sự hiểu biết của bạn

Bạn có thể có bao nhiêu hàm Lambda?

Mỗi khu vực trong tài khoản AWS của bạn có giới hạn tương tranh Lambda. Giới hạn áp dụng cho tất cả các chức năng trong cùng một khu vực và được đặt thành 1000 theo mặc định .

Có bao nhiêu hàm Lambda có thể chạy cùng lúc?

Giới hạn đồng thời mặc định cho mỗi Khu vực AWS là 1.000 lệnh tại bất kỳ thời điểm nào. Hạn ngạch đồng thời chụp liên tiếp mặc định cho mỗi Khu vực là từ 500 đến 3.000, thay đổi theo từng Khu vực. Không có giới hạn đồng thời tối đa cho hàm Lambda .

Hạn chế của hàm lambda trong Python là gì?

Giới hạn kỹ thuật . Rõ ràng, điều này khiến Lambda không phù hợp với khối lượng công việc dài hạn. Tải trọng cho mỗi lần gọi hàm Lambda bị giới hạn ở 6 MB và bộ nhớ bị giới hạn ở mức dưới 3 GB. The maximum time a function can run is 15 minutes, and the default timeout is 3 seconds. Obviously, this makes Lambda unsuitable for long-running workloads. The payload for each invocation of a Lambda function is limited to 6MB, and memory is limited to just under 3GB.

Hàm lambda trong Python là gì, nó có thể có nhiều câu lệnh không?

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

Chủ Đề