python *args 和 **kwargs

标签 python args keyword-argument

我看过之前关于这个主题的堆栈溢出帖子,但是当我尝试运行我的函数时,我仍然无法创建使用这两个命令。我编写了一个简单移动平均线的演示示例,我想通过 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/

相关文章:

python - 避免在 python 上使用 utf-8

python - 使用python计算每一行的数字

python - 带有 *args 的 lambda 表达式

python - 为什么不能在 __init__ 关键字参数中使用类变量?

python - 在 Jython 中使用 getattr 时出现 StackOverflowError

Python正则表达式部分提取

vim:缓冲区和参数有什么区别

Java启动一个单独的进程并附加参数

python - 如何调用包含带有输入函数数据的 kwargs 的函数?

python - 将函数及其参数传递给另一个函数