我想这样做是为了将字符串传递给Cython代码:

# test.py
s = "Bonjour"
myfunc(s)

# test.pyx
def myfunc(char *mystr):
    cdef int i
    for i in range(len(mystr)):           # error! len(mystr) is not the length of string
        print mystr[i]                    # but the length of the *pointer*, ie useless!

但如注释所示,此处无法正常工作。

我发现的唯一解决方法是将长度也作为myfunc的参数传递。这是正确的吗?将字符串传递给Cython代码真的是最简单的方法吗?
# test.py
s = "Bonjour"
myfunc(s, len(s))


# test.pyx
def myfunc(char *mystr, int length):
    cdef int i
    for i in range(length):
        print mystr[i]

最佳答案

最简单的recommended方法是将参数作为Python字符串使用:

def myfunc(str mystr):

关于python - Cython函数中的字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30879708/

10-12 15:07