加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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

发布时间:2020-12-16 23:33:51 所属栏目:Python 来源:网络整理
导读:我正在使用getattr根据变量调用不同的函数. 我做这样的事情: getattr(foo,bar) () 这样工作,调用函数foo.bar() 我的问题是我有’bar’功能,我想用不同的参数调用它.例如: def f1() : passdef f2(param1) : passdef f3(param1,param2) : pass 所以’bar’可
我正在使用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.它将适用于任何功能/方法.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读