Python使用getattr调用具有可变参数的函数

前端之家收集整理的这篇文章主要介绍了Python使用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相关文章