复杂到Python复杂的转换

复杂到Python复杂的转换,python,c++,std,cython,complex-numbers,Python,C++,Std,Cython,Complex Numbers,我现在正在编写一个C++程序的包装器,它使用 STD::复合< /代码>,在Cython中可用为代码> LBCPP。 然而,在这个和Python复合体之间并没有隐式转换,我正在试图找到实现这个转换的最佳方法 显而易见的是使用 cdef libcpp.complex.complex[double] x = ... X = complex(x.real(),x.imag() 及 及 但是有没有更好的方法,最好是让cython自动进行转换 例如,在一些cpdef函数中会出现这种情况,为了提高速度,我

我现在正在编写一个C++程序的包装器,它使用<代码> STD::复合< /代码>,在Cython中可用为代码> LBCPP。 然而,在这个和Python复合体之间并没有隐式转换,我正在试图找到实现这个转换的最佳方法

显而易见的是使用

cdef libcpp.complex.complex[double] x = ...
X = complex(x.real(),x.imag()

但是有没有更好的方法,最好是让cython自动进行转换

例如,在一些
cpdef
函数中会出现这种情况,为了提高速度,我希望避免在cython的调用中使用Python复合体


但是,我可以告诉Cython不能隐式地进行这个转换,因此我不能避免使用Python复合代码来从Python或C++中调用代码。

< P>将在Cython的下一版本中发布。

cdef complex Y = ...
cdef libcpp.complex.complex[double] y = libcpp.complex.complex[double](Y.real, Y.imag)
cdef libcpp.complex.complex[double] z
cdef complex Z = ...
z.real(Z.real)
z.imag(Z.imag)