2012-07-24 78 views
17

在Python腳本我稱之爲從rpy2的功能,但我得到這個錯誤:的Python:語法錯誤:關鍵字不能表達

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

究竟錯在哪裏嗎?

+2

關於你提到的更新:許多語法錯誤配備了插入符號'^'在引起解析錯誤令牌指向,他人(包括本)沒有。在任何情況下,請注意錯誤消息,並在必要時[google錯誤信息](http://www.google.com/search?q=Python+「關鍵字+不能+ + + +表達式」)。 。在這種情況下,第一次點擊應該已經清理了一些事情。 – 2012-07-24 15:02:14

+11

@SvenMarnach:使用Google搜索錯誤消息可以立即獲得此頁面。 – Thanatos 2014-02-27 19:19:12

回答

15

sum.up不是有效的關鍵字參數名稱。關鍵字參數必須是有效的標識。你應該看看你正在使用的庫的文檔如何調用這個參數真的 - 也許sum_up

+0

是的,就是這樣。我在處理R函數時忘記了所有的點都需要轉換成下劃線。所以'sum_up'完成了這個訣竅。 :) – 2012-07-24 14:52:49

+0

剛剛有相同的語法錯誤,因爲我使用的參數名稱爲「my-argument-name」。您的回答幫助我發現將其重命名爲「my_argument_name」可以解決錯誤。 – Flaudre 2015-06-25 02:45:36

6

這是Python的源解析器故障sum.up=False命名參數爲sum.up是無效參數名稱(您不能在參數名稱中使用點 - 僅字母數字和下劃線)。

-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) 
+0

不知道你是否回答了OP的問題,但是你回答了我關於格式函數需要參數而不是字符串的問題。 – chishaku 2015-01-20 15:56:07

4

我想我們很多人誰來到這個頁面有問題Scikit學習,來解決它一個方法是創建一個帶參數的字典,並把它傳遞給型號:

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

使用彈性搜索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"}}) 
相關問題