Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 有条件地将命名关键字参数传递给函数_Python - Fatal编程技术网

Python 有条件地将命名关键字参数传递给函数

Python 有条件地将命名关键字参数传递给函数,python,Python,我不确定我在问题中是否使用了正确的措辞,但我遇到的情况是,我正在调用一个函数,并且仅当我有一个值时才将一个值传递给它的一个命名关键字参数。我目前如何做的一个简化示例: var_1 = data.get("var_1", None) if var_1: some_function(some_arg=var_1) else: some_function() 函数some\u function()不接受将some\u arg设置为None,因此我只能在具有有效值的情况下使用命名参数

我不确定我在问题中是否使用了正确的措辞,但我遇到的情况是,我正在调用一个函数,并且仅当我有一个值时才将一个值传递给它的一个命名关键字参数。我目前如何做的一个简化示例:

var_1 = data.get("var_1", None)

if var_1:
    some_function(some_arg=var_1)
else:
    some_function()
函数
some\u function()
不接受将
some\u arg
设置为None,因此我只能在具有有效值的情况下使用命名参数调用该函数

上述内容对我来说不太可取的原因是,我正在进行的实际函数调用有一堆(5+)我设置的命名参数。这会导致重复大部分相似的函数调用,这些调用只相差一个参数

有没有更好的方法/更像蟒蛇的方法?我希望我可以调用该函数并设置所有可能要传递的命名参数,但在运行时,只传递我实际需要的值

如果有问题,函数调用是对AWS Python SDK(Boto3)的,因此我无法更改函数的行为。

您可以做的是:

var_1 = data.get("var_1", None)
fun_kwargs = {'some_arg': var_1} if var_1 else {}
some_function(**fun_kwargs)
如果有多个参数,可以执行以下操作:

fun_kwargs = {}
if var1: fun_kwargs['some_arg1'] = var_1
if var2: fun_kwargs['some_arg2'] = var_2
if var3: fun_kwargs['some_arg3'] = var_3
some_function(**fun_kwargs)

some_arg
是否有已知的默认值,或者它是严格可选的关键字参数(例如,从
**kwargs
中提取)?此方法是否可扩展到多个参数?e、 g.两个不同kwargs的
var_1
var_2
?@swigganicks是的,只需将可用的内容填入
dict
,并用
**
传递给函数即可。我添加了一个示例,其中包含一种可能的方法。