我已經看到了關於此主題的先前的堆棧溢出帖子,但是當我嘗試運行我的函數時,仍然無法創建使用這兩個命令。我編寫了一個簡單移動平均值的演示示例,我想通過參數kwargs命令來運行。python * 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
但是,第二次我嘗試添加參數和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
究竟是什麼在*參數** kwargs邏輯我錯了嗎?我試着輸入一個元組和一個字典,但都沒有工作。
這就是...不是args和kwargs的用途。如果你知道參數名稱,而你只是想傳遞它們,爲什麼要使用args/kwargs? –