2012-07-24 21 views
17

Trong một kịch bản Python tôi gọi một hàm từ rpy2, nhưng tôi nhận được lỗi này:Python: Lỗi Cú pháp: từ khóa không thể là một biểu hiện

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

gì chính xác đã xảy ra ở đây?

+2

Về cập nhật của bạn: Nhiều lỗi cú pháp đi kèm với một dấu nháy '^ 'chỉ vào dấu hiệu gây ra lỗi phân tích cú pháp, những người khác (trong đó có một này) thì không. Trong mọi trường hợp, hãy chú ý đến thông báo lỗi và [google messgae lỗi] (http://www.google.com/search?q=Python+ "từ khóa + không thể + là + biểu thức +") nếu cần . Trong trường hợp này, lượt truy cập đầu tiên sẽ xóa mọi thứ. –

+11

@SvenMarnach: Googling thông báo lỗi sẽ đưa bạn đến trang này ngay bây giờ. – Thanatos

Trả lời

15

sum.up không phải là tên đối số từ khóa hợp lệ. Đối số từ khóa phải là số nhận dạng hợp lệ. Bạn nên tìm trong tài liệu của thư viện bạn đang sử dụng cách đối số này thực sự được gọi là - có thể sum_up?

+0

Vâng, đúng vậy. Tôi quên rằng khi giao dịch với các hàm R, tất cả các dấu chấm cần được dịch thành dấu gạch dưới. Vì vậy, 'sum_up' đã làm các trick. :) –

+0

Chỉ có lỗi cú pháp giống nhau vì tôi đã sử dụng tên đối số "my-argument-name". Câu trả lời của bạn đã giúp tôi tìm ra rằng đổi tên nó thành "my_argument_name" có thể giải quyết được lỗi. – Flaudre

6

Đó là lỗi trình phân tích cú pháp nguồn python trên sum.up=False đối số được đặt tên là sum.up không phải là tên đối số hợp lệ (bạn không thể sử dụng dấu chấm - chỉ chữ và số và dấu gạch dưới trong tên đối số).

-1

Tôi vừa gặp sự cố đó khi chuyển đổi từ định dạng % thành .format().

đang Previous:

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

Problematic cú pháp:

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

Vấn đề là format là một chức năng mà cần tham số. Chúng không thể là chuỗi. Đó là một trong những thông báo lỗi python tồi tệ nhất mà tôi từng thấy.

đang Corrected:

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

Không chắc chắn nếu bạn trả lời câu hỏi của OP nhưng bạn đã trả lời câu hỏi tôi có về chức năng định dạng cần tham số, không phải chuỗi. – chishaku

4

Tôi đoán nhiều người trong chúng đã đến trang này có một vấn đề với Scikit Tìm hiểu, một cách để giải quyết nó là tạo ra một từ điển với các thông số và vượt qua nó để mô hình:

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

Sử dụng API tìm kiếm DSL đàn hồi, bạn có thể nhấn lỗi tương tự với

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

Bạn có thể giải quyết nó bằng cách thực hiện:

s = Search(using=client, index="my-index") \ 
    .query({"match": {"category.keyword":"Musician/Band"}}) 
Các vấn đề liên quan