2015-01-22 4 views
0

У меня есть следующий код внутри класса CDEF (Cython язык):Синтаксическая ошибка при конкатенации строки в Cython

def toString(self): 
    res = "lut= " + str(self._mm_np[0].lut) + 
     "n1= " + str(self._mm_np[0].n1) + 
     "nlay= "+ str(self._mm_np[0].nlay) + 
     "n3= " + str(self._mm_np[0].n3) 
    return res 

, когда я пытаюсь скомпилировать файл Cython, содержащий этот код, я получаю следующую ошибку синтаксиса: «Ожидается идентификатор или литерал», указывающий на место с первым «+» в конкатенации строк.

Я попытался использовать '\' вместо '+' без успеха. Каков правильный способ объединения строк в Pyhton/Cython? Спасибо!

ответ

1

Вы упускаете линии продолжения оператора \:

def toString(self): 
    res = "lut= " + str(self._mm_np[0].lut) + \ 
    "n1= " + str(self._mm_np[0].n1) + \ 
    "nlay= "+ str(self._mm_np[0].nlay) + \ 
    "n3= " + str(self._mm_np[0].n3) 
    return res 

... но вы действительно не должны делать это. Это считается плохим стилем.

Исследуйте использование метода .format для строк; он предоставит позиционные аргументы этой строке, чтобы вы не имели, чтобы объединиться.

def toString(self): 
    return "lut={} n1={} nlay={} n3={}".format(
       str(self._mm_np[0].lut), 
       str(self._mm_np[0].n1), 
       str(self._mm_np[0].nlay), 
       str(self._mm_np[0].n3)) 
+0

Спасибо, очень полезно. –