Tôi đang mơ về một phương pháp Python với args từ khóa rõ ràng:Lấy các đối số từ khóa thực sự truyền cho một phương pháp Python
def func(a=None, b=None, c=None):
for arg, val in magic_arg_dict.items(): # Where do I get the magic?
print '%s: %s' % (arg, val)
Tôi muốn để có được một cuốn từ điển của chỉ những đối số người gọi thực sự chuyển vào phương pháp, giống như **kwargs
, nhưng tôi không muốn người gọi có thể chuyển bất kỳ arg ngẫu nhiên cũ nào, không giống như **kwargs
.
>>> func(b=2)
b: 2
>>> func(a=3, c=5)
a: 3
c: 5
Vì vậy: có câu thần chú như vậy không? Trong trường hợp của tôi, tôi tình cờ có thể so sánh từng đối số dựa trên giá trị mặc định của nó để tìm ra các đối số khác nhau, nhưng đây là loại không phù hợp và trở nên tẻ nhạt khi bạn có chín đối số. Đối với điểm thưởng, cung cấp một câu thần chú có thể cho tôi biết ngay cả khi người gọi đi trong một cuộc tranh luận từ khóa được gán giá trị mặc định của nó:
>>> func(a=None)
a: None
tinh quái!
Chỉnh sửa: Chữ ký chức năng (từ điển) phải duy trì nguyên vẹn. Đó là một phần của API công khai và giá trị chính của từ khóa rõ ràng args nằm trong giá trị tài liệu của chúng. Chỉ để làm những điều thú vị. :)
Câu hỏi này có tiêu đề rất giống nhau, nhưng tôi không hoàn toàn chắc chắn nếu đó là một bản sao: http://stackoverflow.com/questions/196960/can-you-list-the-keyword-arguments-a-python -function-receive –
@AndersonGreen. Câu hỏi mà bạn đề cập không liên quan gì đến câu hỏi này. Nó yêu cầu làm thế nào để lọc một từ điển khi đi với ** ký hiệu cho một phương thức mà sẽ không chấp nhận tất cả các từ khóa. –
Đây là một câu hỏi hay. –