Python 中的 builtins 是一个内置模块,它包含了 Python 解释器中可用的所有内置函数和变量。但是,builtins 模块的源代码并不像其他模块那样容易找到。
2、解决方案
builtins 模块的源代码位于 Python 解释器的源代码中,具体位置是 Python/bltinmodule.c。这个文件包含了 builtins 模块的所有函数和变量的定义。
# Python/bltinmodule.c
PyMODINIT_FUNC PyInit__builtin__(void)
{
PyObject *m;
m = PyModule_Create(&BuiltinModule);
if (m == NULL)
return NULL;
/* ... */
return m;
}
// Python/bltinmodule.c
static PyMethodDef builtins_methods[] = {
{"apply", apply, METH_VARARGS},
{"chr", PyUnicode_FromOrdinal, METH_O},
{"cmp", cmp, METH_VARARGS},
{"coerce", coerce, METH_VARARGS},
{"compile", compile, METH_VARARGS | METH_KEYWORDS},
{"delattr", delattr, METH_VARARGS},
{"dir", dir, METH_VARARGS | METH_KEYWORDS},
{"divmod", divmod, METH_VARARGS},
{"eval", eval_code, METH_VARARGS | METH_KEYWORDS},
{"exec", exec_code, METH_VARARGS | METH_KEYWORDS},
{"getattr", getattr, METH_VARARGS},
{"hasattr", hasattr, METH_VARARGS},
{"hash", PyUnicode_Hash, METH_O},
{"hex", hex, METH_O},
{"id", id, METH_O},
{"input", stdin_input, METH_VARARGS | METH_KEYWORDS},
{"isinstance", isinstance, METH_VARARGS},
{"issubclass", issubclass, METH_VARARGS},
{"len", PyUnicode_GET_SIZE, METH_O},
{"locals", locals, METH_NOARGS},
{"max", max, METH_VARARGS | METH_KEYWORDS},
{"min", min, METH_VARARGS | METH_KEYWORDS},
{"next", next, METH_O},
{"oct", oct, METH_O},
{"open", open_file, METH_VARARGS | METH_KEYWORDS},
{"ord", PyUnicode_GetWchar, METH_O},
{"pow", pow, METH_VARARGS | METH_KEYWORDS},
{"print", print_expr, METH_VARARGS | METH_KEYWORDS},
{"property", property, METH_VARARGS},
{"quit", Py_Exit, METH_VARARGS},
{"range", range_function, METH_VARARGS | METH_KEYWORDS},
{"reload", reload_module, METH_VARARGS},
{"repr", repr, METH_O},
{"reversed", reversed_iterator, METH_O},
{"round", round, METH_VARARGS | METH_KEYWORDS},
{"setattr", setattr, METH_VARARGS},
{"sorted", sorted_list, METH_VARARGS | METH_KEYWORDS},
{"sum", sum, METH_VARARGS | METH_KEYWORDS},
{"super", super_function, METH_VARARGS | METH_KEYWORDS},
{"vars", vars, METH_O},
{"zip", zip, METH_VARARGS},
{NULL, NULL} /* sentinel */
};
您还可以使用以下命令来打印 builtins 模块的源代码:
import dis
dis.dis(__builtins__)
这种方法可以打印出 builtins 模块中所有函数和变量的汇编代码。