Python:SyntaxError:keyword不能是表达式

时间:2012-07-24 14:46:50

标签: python syntax syntax-error keyword

在Python脚本中,我从rpy2调用一个函数,但是我收到了这个错误:

#using an R module 
res = DirichletReg.ddirichlet(np.asarray(my_values),alphas,
                              log=False, sum.up=False) 
SyntaxError: keyword can't be an expression

这到底出了什么问题?

5 个答案:

答案 0 :(得分:22)

sum.up不是有效的关键字参数名称。关键字参数必须是有效的标识符。您应该查看您正在使用的库真正的文档 - 也许sum_up

答案 1 :(得分:16)

我想我们很多来到这个页面的人都有 Scikit Learn的问题,解决问题的一种方法是创建一个带参数的字典并将其传递给模型:

params = {'C': 1e9, 'gamma': 1e-07}
cls = SVC(**params)    

答案 2 :(得分:7)

这是sum.up=False命名参数上的python源解析器失败,因为sum.up不是有效的参数名称(你不能使用点 - 只能在参数名中使用字母数字和下划线)。

答案 3 :(得分:2)

使用Elastic search DSL API,您可能会遇到与

相同的错误
s = Search(using=client, index="my-index") \
    .query("match", category.keyword="Musician")

您可以通过以下方式解决问题:

s = Search(using=client, index="my-index") \
    .query({"match": {"category.keyword":"Musician/Band"}})

答案 4 :(得分:1)

%格式转换为.format()时,我遇到了这个问题。

上一个代码:

"SET !TIMEOUT_STEP %{USER_TIMEOUT_STEP}d" % {'USER_TIMEOUT_STEP' = 3}

有问题的语法:

"SET !TIMEOUT_STEP {USER_TIMEOUT_STEP}".format('USER_TIMEOUT_STEP' = 3)

问题是format是一个需要参数的函数。它们不能是字符串。 这是我见过的最糟糕的python错误消息之一。

更正后的代码:

"SET !TIMEOUT_STEP {USER_TIMEOUT_STEP}".format(USER_TIMEOUT_STEP = 3)