What is the difference between
cpdef when I declare a function?
The difference between def and the others is more or less clear. And I've also seen that sometimes it's added the return type in the declaration (
cdef void/double/int... name) and sometimes not.
How can I declare a string variable in Cython, as I didn't know it? I declared it as object.
def declares a function in Python. Since Cython is based on C runtime, it allows you to use
cdef declares function in the layer of C language. As you know (or not?) in C language you have to define type of returning value for each function. Sometimes function returns with
void, and this is equal for just
return in Python.
Python is an object-oriented language. So you also can define class method in layer of C++ language, and override this methods in subclasses:
cdef class A:
cdef class B(A)
cdef foo(self, x=None)
print "B", x
cdef class C(B):
cpdef foo(self, x=True, int k=3)
print "C", x, k
Summary, why do we need to use
cpdef? Because if you use Cython, your Python code will be converted into C code before compile. So with this things you can control the resulting C-code listing.
For more information I suggest you to read the official documentation: http://docs.cython.org/src/reference/language_basics.html