在Python中将关键字参数作为必需参数传递

在Python中将关键字参数作为必需参数传递,python,Python,例如,我有3个函数,带有必需的参数(有些参数由函数共享,顺序不同): 如果我有下一本字典: argument_dict = {'a':3,'b':3,'c':23,'d':6,'e':1,'f':8} 是否可以用这种方式调用函数??: value_one = function_one(**argument_dict) value_two = function_two (**argument_dict) value_three = function_three (**argument_dict)

例如,我有3个函数,带有必需的参数(有些参数由函数共享,顺序不同):

如果我有下一本字典:

argument_dict = {'a':3,'b':3,'c':23,'d':6,'e':1,'f':8}
是否可以用这种方式调用函数??:

value_one = function_one(**argument_dict)
value_two = function_two (**argument_dict)
value_three = function_three (**argument_dict)

不是您编写这些函数的方式,不是:它们不需要额外的参数,因此会引发类型错误


如果您将所有函数定义为也需要
**kwargs
,则一切都将按您的意愿进行。

我假设您尝试的是创建一个参数数量未定义的函数。您可以通过使用args(参数)或kwargs(关键字参数类foo='bar')样式来实现这一点,例如:

争论

def f(*args): print(args)

f(1, 2, 3)
(1, 2, 3)`
然后是夸尔格

def f2(**kwargs): print(kwargs)

f2(a=1, b=3)
{'a': 1, 'b': 3}
让我们再试试看

def f(my_dict): print (my_dict['a'])

f(dict(a=1, b=3, c=4))
1
它工作!!!因此,如果您不知道函数还可以接收什么,可以这样做,并使用kwargs对其进行补充

当然你可以:

argument_dict = {'a':1, 'b':3, 'c':4}
f(argument_dict)
1

因此,您不必一直使用kwargs和args。这完全取决于传递给函数的对象的抽象级别。在你的例子中,你传递的是一本字典,这样你就可以不必担心这个家伙了。

是的,我试过了,而且我有Daniel说的TypeError Hanks Daniel,所以Python写函数的方式是这样的(例如):def function\u two(b,c,e,**kwargs):。。。def功能_三(f、a、c、d、**kwargs):。。。或者这个??:def function_two(**kwargs):。。。def function_three(**kwargs):…关键是要了解您知道您将为函数提供什么。假设我知道会给出函数a和b,然后是一堆其他参数,你可以使用def(a,b,*args),如果我也会使用关键字参数,def(a,b,*args,**kwargs)。(KWARG类型为c=1,d=2)
argument_dict = {'a':1, 'b':3, 'c':4}
f(argument_dict)
1