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

标签 python function variables parameters getattr

我正在使用 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/

相关文章:

python - 颜色栏中的偏移刻度标签

function - 将表名和列名定义为 plpgsql 函数中的参数?

c - 为什么这个变量会在 return 语句后改变?

javascript - 全局时 JSON 变量未定义

python - 在函数内部使用全局变量

Python加入一个进程而不阻塞父进程

c++ - 如何使用真正的字符串类型来表示类结构函数中的字符串?

C++制作控制台: binding a function

python - 如何将字节数组显示为十六进制值

javascript - 在同一文本区域内显示多个函数值