我有一个以 *args 作为参数的函数。我也有一个清单。根据条件,我要么想将列表传递给函数,要么在函数调用中使用星号表达式解压列表。我必须多次调用此函数并传递列表,无论是否解压。但是决定列表是否需要解包或不仅需要在开始时评估一次的条件。我想避免编写许多 if 语句检查来评估条件,只是为了确定我是否需要 *。有没有办法动态地做到这一点?还是有我没有想到的更好的方法?我希望我可以在函数中应用逻辑,但不幸的是我无法修改函数。以下是我尝试过但失败的一些示例:if condition: parameters = *listelse: parameters = list...func(parameters)...func(parameters)...func(parameters)...if condition: parameters = '*list'else: parameters = 'list'...func(parameters)...func(parameters)...func(parameters)...编辑:添加了更多 func 调用以更清晰。
2 回答
慕运维8079593
TA贡献1876条经验 获得超5个赞
与您正在做的事情相反:您不能将列表“解包”到变量中,这是没有意义的,但是您可以将参数包装到列表中并始终将其解包。
那是:
if condition:
parameters = list
else:
parameters = [list]
...
func(*parameters)
...
func(*parameters)
...
func(*parameters)
守着星空守着你
TA贡献1799条经验 获得超8个赞
您可以尝试使用 lambda:
if condition:
new_func = lambda params: func(*params)
else:
new_func = lambda params: func(params)
...
new_func(parameters)
new_func(parameters)
new_func(parameters)
添加回答
举报
0/150
提交
取消