Python: SyntaxError: keyword can’t be an expression

Posted on

Question :

Python: SyntaxError: keyword can’t be an expression

In a Python script I call a function from rpy2, but I get this error:

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

What exactly went wrong here?

Answer #1:

sum.up is not a valid keyword argument name. Keyword arguments must be valid identifiers. You should look in the documentation of the library you are using how this argument really is called – maybe sum_up?

Answered By: Ricky Robinson

Answer #2:

I guess many of us who came to this page have a problem with Scikit Learn, one way to solve it is to create a dictionary with parameters and pass it to the model:

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

Answer #3:

It’s python source parser failure on sum.up=False named argument as sum.up is not valid argument name (you can’t use dots — only alphanumerics and underscores in argument names).

Answered By: Paddy

Answer #4:

Using the Elastic search DSL API, you may hit the same error with

s = Search(using=client, index="my-index") 
    .query("match", category.keyword="Musician")

You can solve it by doing:

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

Answer #5:

I just got that problem when converting from % formatting to .format().

Previous code:


Problematic syntax:


The problem is that format is a function that needs parameters. They cannot be strings.
That is one of worst python error messages I’ve ever seen.

Corrected code:

Answered By: Bob Yoplait

Leave a Reply

Your email address will not be published. Required fields are marked *