Với hàm bậc cao hơn có nhiều hàm làm đối số, hàm đó có thể chuyển đối số từ khóa tới đối số hàm như thế nào?Tách ** kwargs cho các chức năng khác nhau
dụ
def eat(food='eggs', how_much=1):
print(food * how_much)
def parrot_is(state='dead'):
print("This parrot is %s." % state)
def skit(*lines, **kwargs):
for line in lines:
line(**kwargs)
skit(eat, parrot_is) # eggs \n This parrot is dead.
skit(eat, parrot_is, food='spam', how_much=50, state='an ex-parrot') # error
state
không phải là một arg từ khóa của eat
vậy làm thế nào có thể Skit chỉ vượt qua args từ khóa có liên quan chức năng mà nó được gọi?
Không nghi ngờ có nhiều cách để thực hiện điều này, nhưng tôi nghĩ rằng bạn đang tiếp cận này từ góc độ sai. Bạn sẽ làm gì nếu hai hàm của bạn lấy từ khóa arg có cùng tên và bạn muốn chuyển các giá trị khác nhau cho hai hàm này? Tốt nhất để chỉ cần vượt qua trong dicts của từ khóa args một cách rõ ràng. Mỗi đối số có khả năng sẽ là (nói) một tuple hai phần tử bao gồm một hàm và mệnh đề của từ khóa args. – Hammerite
Đó có lẽ là giải pháp tốt nhất. – cheezsteak