我看过之前关于这个主题的堆栈溢出帖子,但是当我尝试运行我的函数时,我仍然无法创建使用这两个命令。我编写了一个简单移动平均线的演示示例,我想通过 args,kwargs 命令运行它。
import numpy as np
def moving_average(data,lookback=7,SMA=True): #MA function
if SMA==True:
weights=np.repeat(1.0,lookback)/lookback
smas=np.convolve(data,weights,'valid')
return smas
只需运行此函数即可按预期工作。
data=np.random.randn(100) #randomly
moving_average(data,lookback=7,SMA=True) #this outputs the correct set of numbers
然而,当我尝试添加 args 和 kwargs 时,它就崩溃了。
def test1(*args,**kwargs):
return moving_average(data,lookback,SMA)
test1(data,lookback=7,SMA=True) #this returns an error, saying my global lookback is not defined
我在 *args **kwargs 逻辑中到底错了什么?我尝试同时输入元组和字典,但这些似乎都不起作用。
最佳答案
将 *args
和 **kwargs
传递给您的函数,而不是参数和命名参数:
def test1(*args,**kwargs):
return moving_average(*args, **kwargs)
关于python *args 和 **kwargs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39596753/