关于自动设置方法参数的问题

时间:2018-10-07 13:01:09

标签: python-3.x parameters arguments

有字典和方法。

ALL_DIC = {"A":"a", "B":"b", "C":"c", "D":"d", "E":"e"}

def something(A=None, B=None, D=None):
    print(A,B,D)

something(**ALL_DIC)

发生以下错误:

Traceback (most recent call last):
  File "D:/crawl_master/nolja.py", line 186, in <module>
    something(**ALL_DIC)
TypeError: something() got an unexpected keyword argument 'C'

所以我使用了以下内容, 但我不喜欢我想知道是否有更好的方法或库。

import inspect
args, _, _, values = inspect.getargspec(something)
for key in list(ALL_DIC.keys()):
    if key not in args:
        del ALL_DIC[key]

something(**ALL_DIC)

我想要一些建议。谢谢您阅读。

1 个答案:

答案 0 :(得分:0)

一种更简单的方法是使something接受可变关键字参数:

def something(A=None, B=None, D=None, **kwargs):
    print(A,B,D)

,以便接受传递给something的所有其他关键字参数(如果您不使用kwargs,则将其忽略)。