Using multiple arguments in multiple functions efficiently
我一直在研究
对于参数**(双星/星号)和*(星/星号)做了什么?
*args和**kwargs?
如何在python中将列表扩展为函数参数
将python dict转换为kwargs?
但是,上面的线程没有提供一个明确的答案在多个函数中灵活使用相同(关键字)参数及其默认值的最佳方法是什么?灵活地说,我的意思是能够在每个函数中根据具体情况定义额外的(关键字)参数。
本质上,我希望避免在每个函数中反复手动定义相同的参数,而只关注那些在每个函数中都是必需的。
例如,而不是:
1 2 3 4 5 | def testfunction1(voltage=0, state="bleedin", status=0): ...do something... def testfunction2(voltage=0, state="bleedin", status=0, action="VOOM"): ...do something else... |
(注:
我想要以下几行的:
1 2 3 4 5 6 7 | d = {"voltage": 0,"state":"bleedin", status} def testfunction1(**d): ...do something... def testfunction2(**d, action="VOOM"): ...do something else... |
然后我可以调用每个函数,比如:
1 | testfunction1(voltage=5, state="healthy") |
或者直接指定参数如下:
1 | testfunction1((5,"healthy", statuslist) |
希望这是清楚的,但如果必要的话,我很乐意进一步澄清。
下面是一个使用注释中提到的类的方法。
1 2 3 4 5 6 | class test: def __init__(self,voltage = 5, state ="bleedin", status = 0): self.arguments = {'voltage' : voltage, 'state' : state, 'status': status} #You essentially merge the two dictionary's with priority on kwargs def printVars(self,**kwargs): print({**self.arguments,**kwargs}) |
这是一个样本
1 2 3 | >>> a = test() >>> a.printVars(status = 5, test = 3) {'voltage': 5, 'state': 'bleedin', 'status': 5, 'test': 3} |