跳转到主要内容

Complex Number Objects

pair: object; complex number

This subtype of PyObject represents a Python complex number object.

The complex number value, using the C Py_complex representation.

3.15 3.20 Use PyComplex_AsCComplex and PyComplex_FromCComplex to convert a Python complex number to/from the C Py_complex representation.

This instance of PyTypeObject represents the Python complex number type. It is the same object as complex in the Python layer.

Return true if its argument is a PyComplexObject or a subtype of PyComplexObject. This function always succeeds.

Return true if its argument is a PyComplexObject, but not a subtype of PyComplexObject. This function always succeeds.

Return a new PyComplexObject object from real and imag. Return NULL with an exception set on error.

Return the real part of op as a C double.

If op is not a Python complex number object but has a ~object.__complex__ method, this method will first be called to convert op to a Python complex number object. If !__complex__ is not defined then it falls back to call PyFloat_AsDouble and returns its result.

Upon failure, this method returns -1.0 with an exception set, so one should call PyErr_Occurred to check for errors.

3.13 Use ~object.__complex__ if available.

Return the imaginary part of op as a C double.

If op is not a Python complex number object but has a ~object.__complex__ method, this method will first be called to convert op to a Python complex number object. If !__complex__ is not defined then it falls back to call PyFloat_AsDouble and returns 0.0 on success.

Upon failure, this method returns -1.0 with an exception set, so one should call PyErr_Occurred to check for errors.

3.13 Use ~object.__complex__ if available.

This C structure defines an export format for a Python complex number object.

The structure is defined as:

typedef struct {
    double real;
    double imag;
} Py_complex;

Create a new Python complex number object from a C Py_complex value. Return NULL with an exception set on error.

Return the Py_complex value of the complex number op.

If op is not a Python complex number object but has a ~object.__complex__ method, this method will first be called to convert op to a Python complex number object. If !__complex__ is not defined then it falls back to ~object.__float__. If !__float__ is not defined then it falls back to ~object.__index__.

Upon failure, this method returns Py_complex with ~Py_complex.real set to -1.0 and with an exception set, so one should call PyErr_Occurred to check for errors.

3.8 Use ~object.__index__ if available.

Complex Numbers as C Structures

The API also provides functions for working with complex numbers, using the Py_complex representation. Note that the functions which accept these structures as parameters and return them as results do so by value rather than dereferencing them through pointers.

Please note, that these functions are soft deprecated since Python 3.15. Avoid using this API in a new code to do complex arithmetic: either use the Number Protocol <number> API or use native complex types, like double complex.

Return the sum of two complex numbers, using the C Py_complex representation.

3.15

Return the difference between two complex numbers, using the C Py_complex representation.

3.15

Return the negation of the complex number num, using the C Py_complex representation.

3.15

Return the product of two complex numbers, using the C Py_complex representation.

3.15

Return the quotient of two complex numbers, using the C Py_complex representation.

If divisor is null, this method returns zero and sets errno to !EDOM.

3.15

Return the exponentiation of num by exp, using the C Py_complex representation.

If num is null and exp is not a positive real number, this method returns zero and sets errno to !EDOM.

Set errno to !ERANGE on overflows.

3.15

Return the absolute value of the complex number num.

Set errno to !ERANGE on overflows.

3.15

3.16 This function leaves errno unchanged on success.