2013-03-21 38 views
6

Chính xác những gì đang xảy ra trong hàm:hiểu Rắc rối hàm lambda

lambda x: 10 if x == 6 else 1 

Tôi biết những gì một số chức năng lambda làm, nhưng tôi không quen thấy họ viết như thế này. Tôi là một noob với bất kỳ dạng mã nào.

Trả lời

2

Vì python là một ngôn ngữ tuyệt vời với các tính năng chức năng, bạn có thể thực hiện những điều tiện dụng với các hàm sử dụng lambdas. dụ của bạn là tương đương với

if x == 6: 
    return 10 
else: 
    return 1 

lambda chức năng này rất hữu ích nếu bạn cần phải vượt qua một chức năng đơn giản như một cuộc tranh cãi với chức năng khác ở đâu đó trong mã của bạn.

+2

Vâng, "python là ngôn ngữ chức năng" hơi căng. Đó là một ngôn ngữ bắt buộc với các tính năng chức năng. – Gene

+0

Đủ tính năng trong các mô hình khác được gọi là "đa mô hình"; giống như hầu như tất cả các ngôn ngữ chính thống. – marr75

+0

Cảm ơn bạn. Điều đó thực sự hữu ích. – user2195823

14
some_function = lambda x: 10 if x == 6 else 1 

là cú pháp đường cho:

def some_function(x): 
    return 10 if x == 6 else 1 

Nghĩa là nó sẽ trở lại 10 nếu x == 6 đánh giá là True và gửi lại 1 cách khác.

Cá nhân tôi thích hình thức def trong tất cả trừ trường hợp đơn giản nhất vì nó cho phép chức năng nhiều dòng, làm rõ hơn loại phí trên có liên quan đến việc gọi hàm, giúp phân tích việc đóng chức năng đơn giản hơn, và mở tâm trí của lập trình viên python mới cho các đối tượng mã phức tạp khác (như các lớp), có thể dễ dàng được xây dựng trong thời gian chạy.

+0

Cảm ơn bạn rất nhiều. Điều đó có ý nghĩa tổng thể. – user2195823

+0

Không sao cả! Và chào mừng bạn đến với SO! Chúng tôi hy vọng bạn gắn bó với lập trình và xung quanh StackOverflow! Hãy nhớ "chấp nhận" một trong những câu trả lời này hữu ích bằng cách nhấp vào dấu kiểm. Nếu bạn dự định tiếp tục sử dụng SO, nó sẽ đóng góp cho danh tiếng của bạn như là một "người hỏi". – marr75

Các vấn đề liên quan