我想打印方法的源代码。 例如, math 是python的内置模块,我想打印 ceil的源代码
我知道如何使用 inspect.getsource 打印自定义模块的源代码
需要建议
我正在尝试创建一个程序,我可以调用任何内置方法或函数,它只显示该函数或模块的源代码。
Python几乎包含了内置库中的所有内容,我想使用这些库
例如:
input: factorial
output:
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n-1)
提前感谢:)
答案 0 :(得分:2)
如果源是Python,你可以这样做:
import inspect
import math
try:
print(inspect.getsource(math))
except OSError:
print("Source not available, possibly a C module.")
正如其他人已经评论过的那样,许多内置模块都是C.如果是这样的话,你将不得不潜入资源 - 幸运的是,它并不难找到,结构非常直观。
对于math.ceil,源代码位于cpython中的Modules / mathmodule.c的line 1073:
/*[clinic input]
math.ceil
x as number: object
/
Return the ceiling of x as an Integral.
This is the smallest integer >= x.
[clinic start generated code]*/
static PyObject *
math_ceil(PyObject *module, PyObject *number)
/*[clinic end generated code: output=6c3b8a78bc201c67
input=2725352806399cab]*/
{
_Py_IDENTIFIER(__ceil__);
PyObject *method, *result;
method = _PyObject_LookupSpecial(number, &PyId___ceil__);
if (method == NULL) {
if (PyErr_Occurred())
return NULL;
return math_1_to_int(number, ceil, 0);
}
result = _PyObject_CallNoArg(method);
Py_DECREF(method);
return result;
}