web-dev-qa-db-fra.com

Python: SyntaxError: le mot clé ne peut pas être une expression

Dans un Python j'appelle une fonction de rpy2, mais je reçois cette erreur:

#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'est-ce qui s'est mal passé ici?

34
Ricky Robinson

sum.up n'est pas un nom d'argument de mot clé valide. Les arguments de mots clés doivent être des identificateurs valides. Vous devriez regarder dans la documentation de la bibliothèque que vous utilisez comment cet argument vraiment est appelé - peut-être sum_up?

27
Sven Marnach

Je suppose que beaucoup d’entre nous qui sommes venus sur cette page ont un problème avec Scikit Learn, une façon de le résoudre est de créer un dictionnaire avec des paramètres et de le transmettre au modèle:

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

C’est python sur sum.up=False argument nommé en tant que sum.up n'est pas un nom d'argument valide (vous ne pouvez pas utiliser de points - uniquement des caractères alphanumériques et des traits de soulignement dans les noms d'argument).

7
Vladimir

En utilisant l’API Elastic search DSL, vous pouvez rencontrer la même erreur avec

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

Vous pouvez le résoudre en faisant:

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

Je viens de recevoir ce problème lors de la conversion du formatage % En .format().

Code précédent:

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

Syntaxe problématique:

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

Le problème est que format est une fonction qui a besoin de paramètres. Ils ne peuvent pas être des chaînes. C’est l’un des pires python que j’ai jamais vus.

Code corrigé:

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