有没有办法动态使用星号表达式?

我有一个以 *args 作为参数的函数。我也有一个清单。


根据条件,我要么想将列表传递给函数,要么在函数调用中使用星号表达式解压列表。


我必须多次调用此函数并传递列表,无论是否解压。但是决定列表是否需要解包或不仅需要在开始时评估一次的条件。


我想避免编写许多 if 语句检查来评估条件,只是为了确定我是否需要 *。有没有办法动态地做到这一点?还是有我没有想到的更好的方法?我希望我可以在函数中应用逻辑,但不幸的是我无法修改函数。


以下是我尝试过但失败的一些示例:


if condition:

    parameters = *list

else:

    parameters = list


...

func(parameters)

...

func(parameters)

...

func(parameters)

...

if condition:

    parameters = '*list'

else:

    parameters = 'list'


...

func(parameters)

...

func(parameters)

...

func(parameters)

...

编辑:添加了更多 func 调用以更清晰。


蛊毒传说
浏览 132回答 2
2回答

慕运维8079593

与您正在做的事情相反:您不能将列表“解包”到变量中,这是没有意义的,但是您可以将参数包装到列表中并始终将其解包。那是:if condition:    parameters = listelse:    parameters = [list]...func(*parameters)...func(*parameters)...func(*parameters)

守着星空守着你

您可以尝试使用 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)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python