python "radians" 的源代码

python source code for "radians"

我需要将 x*pi/180.00 的 c 代码实现与 Python 的 radians(x) 相匹配,其中 x 以度为单位。我想查看 Python 的 radians 函数的源代码。我都试过了

print inspect.getsource(type(radians))

print getsource(radians)

没有成功。有什么想法吗?

inspect 只能从 python 中编写的模块中获取源代码。用 C 编写的模块(例如 math)没有可用的源代码。话虽如此,CPython 的官方源代码在 github 上。 math.radians 生活在 Modules/mathmodule.c 并且实现非常简单(将浮点数乘以常数比例因子)。

来自 CPython 源代码(顺序不连续)

static const double degToRad = Py_MATH_PI / 180.0;
static const double radToDeg = 180.0 / Py_MATH_PI;

/*[clinic input]
math.radians
    x: double
    /
Convert angle x from degrees to radians.
[clinic start generated code]*/

static PyObject *
math_radians_impl(PyObject *module, double x)
/*[clinic end generated code: output=34daa47caf9b1590 input=91626fc489fe3d63]*/
{
    return PyFloat_FromDouble(x * degToRad);
}

inspect 包的问题在于它仅适用于 Python 对象,而不适用于底层实现代码。

(3.14159265358979323846/180.0)

180.0/3.14159265358979323846