44

在 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

这里到底出了什么问题?

4

5 回答 5

38

sum.up不是有效的关键字参数名称。关键字参数必须是有效的标识符。您应该查看您正在使用的库的文档,该参数实际上是如何调用的——也许sum_up

于 2012-07-24T14:48:17.033 回答
23

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

params = {'C': 1e9, 'gamma': 1e-07}
cls = SVC(**params)    
于 2017-08-20T12:54:45.773 回答
8

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

于 2012-07-24T14:49:48.453 回答
5

使用 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"}})
于 2017-12-06T19:58:16.980 回答
3

%格式化转换为.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)
于 2014-03-24T10:34:27.323 回答