在 Cython 中连接字符串时出现语法错误

Syntax error when concatenating a string in Cython

我在 cdef class(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 文件时,出现以下语法错误: "Expected an identifier or literal" 指向字符串连接中第一个“+”的位置。

我尝试使用“\”代替“+”,但没有成功。 在 Pyhton/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

...但你真的不应该那样做。这被认为是糟糕的风格。

探索 .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))