为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

蛊毒传说 2022-07-05 16:55:55
我有一个以 *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)


查看完整回答
反对 回复 2022-07-05
?
守着星空守着你

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)


查看完整回答
反对 回复 2022-07-05
  • 2 回答
  • 0 关注
  • 131 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信