每次调用Python中的函数时,都会更改不同的参数

每次调用Python中的函数时,都会更改不同的参数,python,input,keyword-argument,Python,Input,Keyword Argument,我有一个函数 def input_definition(parameter_variation=None): input_def = {} input_def['a'] = 1 input_def['b'] = 2 input_def['c'] = 3 ... input_def['z'] = 26 # Apply the parameter variation by means of the input argument 'param

我有一个函数

def input_definition(parameter_variation=None):

    input_def = {}
    input_def['a'] = 1
    input_def['b'] = 2
    input_def['c'] = 3
    ...
    input_def['z'] = 26

    # Apply the parameter variation by means of the input argument 'parameter_variation'.
    # ...

    # Save 'input_def' to external file with dill module.
    # ...
具有许多参数。我想通过为函数
input\u definition
提供
parameter\u variation
来改变其中一些参数。每次调用
input\u definition
时,我需要改变不同的参数

因此,一次
参数_变量
包含
a
b
的值,另一次
参数_变量
包含
c
d
的值


做这件事的最好的/最整洁的/蟒蛇式的方法是什么?或者使用kwargs更好吗?

您可以使用
kwargs
这样做:

def some_func(**kwargs):
    my_dict = dict(
        a=1,
        b=2,
        c=3,
        d=4
    )
    my_dict.update(**kwargs)
def some_func(a=1, b=2, c=3, d=4):
    my_dict = dict(
        a=a,
        b=b,
        c=c,
        d=d
    )
这将设置默认值,然后使用kwargs覆盖它们

通过简单地使用如下默认参数,可以更好地为dict提供更有限的输入:

def some_func(**kwargs):
    my_dict = dict(
        a=1,
        b=2,
        c=3,
        d=4
    )
    my_dict.update(**kwargs)
def some_func(a=1, b=2, c=3, d=4):
    my_dict = dict(
        a=a,
        b=b,
        c=c,
        d=d
    )

这更安全,并且让阅读您的代码的人更容易理解您的意图。但是,与kwargs相比,它的灵活性要小一些。如果这回答了您的问题,请将其标记为正确答案,以帮助未来寻找相同问题的人:-)。