Почему я получаю «SyntexError: аргумент без ключевого слова после аргумента keyworkd», когда моя функция не задает аргументы ключевого слова в Python? - PullRequest
0 голосов
/ 01 мая 2020

Я читал о позиционных аргументах и ​​аргументах ключевых слов, но до сих пор не понимаю, почему я получаю SyntexError: аргумент без ключевого слова после keyworkd 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(). Парень из учебника написал вот так. Это правильно?

1 Ответ

1 голос
/ 01 мая 2020

Сообщение об ошибке вызвано тем, что в строке 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))

Если вы не уверены, вы можете проверить аргументы, сказав help(minimize) в консоли Python, как только вы импортировали библиотеку, при условии, что функция.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...