Python: SyntaxError: la palabra clave no puede ser una expresión

En un script de Python, llamo a una función desde rpy2 , pero recibo este 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 

¿Qué fue exactamente lo que salió mal aquí?

sum.up no es un nombre de argumento de palabra clave válido. Los argumentos de palabras clave deben ser identificadores válidos. Debe buscar en la documentación de la biblioteca que está utilizando cómo se llama realmente este argumento, ¿tal vez sum_up ?

Creo que muchos de los que vinimos a esta página tenemos un problema con Scikit Learn, una forma de resolverlo es crear un diccionario con parámetros y pasarlo al modelo:

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

Es el error del analizador de origen de Python en sum.up=False argumento con nombre sum.up=False ya que sum.up no es un nombre de argumento válido (no puede usar puntos, solo caracteres alfanuméricos y guiones bajos en los nombres de los argumentos).

Al utilizar la API DSL de búsqueda elástica, puede cometer el mismo error con

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

Puedes resolverlo haciendo:

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

Acabo de tener ese problema al convertir de % formato a .format() .

Código anterior:

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

Sintaxis problemática:

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

El problema es que el format es una función que necesita parámetros. No pueden ser cuerdas. Ese es uno de los peores mensajes de error de Python que he visto.

Código corregido:

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