gpt4 book ai didi

Python使用getattr调用带可变参数的函数

转载 作者:IT老高 更新时间:2023-10-28 21:02:03 26 4
gpt4 key购买 nike

我正在使用 getattr 根据变量调用不同的函数。

我正在做类似的事情:

getattr(foo, bar) ()

这行得通,调用诸如 foo.bar() 之类的函数

我的问题是我有'bar'函数,我想用不同的参数调用它。例如:

def f1() :
pass

def f2(param1) :
pass

def f3(param1,param2) :
pass

所以“bar”可以是 f1、f2 或 f3

我试过这个:假设 params 是一个列表,其中包含 'bar' 函数所需的所有参数

getattr(foo, bar) (for p in params :)

我正在寻找一个“干净”的解决方案,无需查看 params 变量的长度

最佳答案

你可以试试这样的:

getattr(foo, bar)(*params)

如果 params 是列表或元组,则此方法有效。 params 中的元素将按顺序解包:

params=(1, 2)
foo(*params)

相当于:

params=(1, 2)
foo(params[0], params[1])

如果有关键字参数,你也可以这样做。

getattr(foo, bar)(*params, **keyword_params)

其中 keyword_params 是字典。

另外,这个答案真的独立于 getattr。它适用于任何函数/方法。

关于Python使用getattr调用带可变参数的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11781265/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com