python - 当我的函数未在Python中指定关键字参数时,为什么会得到 “SyntexError: non-keyword arg after keyworkd arg”?

标签 python function syntax-error keyword-argument positional-parameter

我读到有关位置参数和关键字参数的信息,但我仍然不明白为什么我通过运行以下代码在argargt 之后得到 SyntexError:non-keyword arg。我没有在目标函数中指定任何关键字参数,对吗?

def obj_func(center, P, ACCUM, sentiment):
    d = 0
    for row in range(ACCUM[sentiment-1],ACCUM[sentiment]):
        v = P[row,:]
        d += v.dot(center) / (norm(v) * norm(center))
    return(-d)

iter_init = np.array([random() for ele in range(k)])
CENTERS = dict()
for sentiment in range(3):
    CENTERS[sentiment] = minimize(obj_func, x0=iter_init, args(P,ACCUM,sentiment),)

另外,我不确定minimize()中的最后一个逗号。教程中的人这样写。这是对的吗?

最佳答案

出现此错误消息的原因是,在CENTERS[sentiment] = minimize(obj_func, x0=iter_init, args(P,ACCUM,sentiment),)行中,您具有关键字agrument x0=iter_init,此后,您具有了非关键字参数args(P,ACCUM,sentiment)
这里args是您正在调用的函数,并将其添加为参数返回的值。我敢打赌,您想给名为args的关键字参数一个元组。在这种情况下,您缺少=,正确的语法将是CENTERS[sentiment] = minimize(obj_func, x0=iter_init, args=(P,ACCUM,sentiment))
如果不确定,可以在导入提供该功能的库后通过在Python控制台中说help(minimize)来检查参数。

关于python - 当我的函数未在Python中指定关键字参数时,为什么会得到 “SyntexError: non-keyword arg after keyworkd arg”?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61536305/

相关文章:

python - 如何将版本/构建信息添加到我的项目和 setup.py 中?

python - 如何在 Python Mechanize 中不使用代理

c++ - const 函数指针

javascript - 什么是JavaScript中的自调用函数?

javascript - JavaScript 函数可以引用调用它的原型(prototype)链上的原型(prototype)吗?

mysql - 在 MySQL 中声明变量语法无效?

c++ - 复制赋值构造函数中的语法错误

python - Flask 验证失败时如何覆盖 html 默认 "Please fill out this field"?

python - 我想检查输入是否在字符串中,然后打印输出

sql - 保留字字段名称表别名查询