Trong Python, giả sử tôi có hàm f
mà tôi muốn chuyển xung quanh với một số đối số thứ cấp (giả sử đơn giản rằng nó chỉ là đối số đầu tiên vẫn còn biến).Sự khác nhau giữa functools.partial và lambda tương tự?
Sự khác biệt giữa việc thực hiện theo hai cách này (nếu có) là gì?
# Assume secondary_args and secondary_kwargs have been defined
import functools
g1 = functools.partial(f, *secondary_args, **secondary_kwargs)
g2 = lambda x: f(x, *secondary_args, **secondary_kwargs)
Trong doc page for partial
, ví dụ, có trích dẫn này:
partial
đối tượng quy định tại các lớp học hoạt động giống như các phương pháp tĩnh và không biến đổi thành phương pháp ghi nhận trong quá dụ thuộc tính nhìn lên.
Phương thức lambda sẽ bị điều này nếu được sử dụng để tạo phương thức lớp từ các đối số được cung cấp cho lớp (hoặc trong hàm dựng hoặc thông qua hàm sau)?
Tôi nghĩ câu hỏi của tôi khá khác so với câu hỏi được liên kết, tuy nhiên câu trả lời hàng đầu cho câu hỏi đó rất kỹ lưỡng và nó cũng trả lời (bằng sự trùng hợp) phần lớn những gì tôi đang tìm kiếm. Tôi sẽ không phàn nàn nếu nó bị đóng. – ely
Tôi đồng ý không trùng lặp, tôi đã mở lại câu hỏi của bạn. Đối với những người khác tham khảo, câu hỏi liên quan là [ở đây] (http://stackoverflow.com/questions/220658/what-is-the-difference-between-a-closure-and-a-lambda). – wim