使用变量中的参数集调用Python函数

Calling Python function with set of parameters from variable

在我的python脚本中,我多次调用这个函数

1
write2db(int(pocnr), larm1, tid, label1, q1, x, y, lat, long, radio)

我希望能够在一个变量中有一组变量。

应该像这样

写入2db(myargs)

因此,当我对arg列表进行更改时,不必在多个地方进行更改。我试过一些东西,但到目前为止还没有运气。有什么建议吗?


您可以使用*args**kwargs。名字argskwargs实际上并不重要,但它的***起了作用。基本上,*将解包列表,同样,**将解包dict。

*args只是一个与您定义函数的顺序相同的值列表。

如。

1
2
args = [23, 6, 2,"label", 5, 25, 21, 343.22, 111.34, 2]
write2db(*args)

**kwargs是参数名到参数值的键值映射(python dict)

如。

1
2
3
4
5
6
kwargs = {
    'pocnr': 23,
    'larm1': 21,
    # ... etc.
}
write2db(**kwargs)


您可以用这些参数创建一个namedtuple,然后在函数内部按名称取出这些参数。

或者,您可以只使用可变长度参数*参数,然后在函数内部使用:

1
2
    for arg in args:
        # do something with arg