您如何在 python 中检索源代码,检查给出类型错误

how can you retrieve source code in python, inspect gives type error

为了更好地编程,分析 numpy 和 scipy 的源代码可能会派上用场。

import inspect,numpy as np

x = [1,2]
inspect.getsource(np.max(x))

gives TypeError

请帮忙,亲切的问候

np.max(x)是一个整数,2。整数没有源代码。

简单尝试

inspect.getsource (np.max)

来自 python 文档

inspect.getsource(object)

Return the text of the source code for an object. The argument may be a module, >class, method, function, traceback, frame, or code object. The source code is >returned as a single string. An OSError is raised if the source code cannot be >retrieved.

在您的示例中显示您正在调用该函数。 试试 inspect.getsource(np.max)

numpyscipy代码,请查看官方文档。

https://numpy.org/doc/stable/reference/generated/numpy.amax.html

通常这些有一个 [source] link。或者它 运行 ipython,仅使用 np.max?? 给出同样的结果。

在这种情况下,大部分显示是文档,实际代码很短:

def amax(a, axis=None, out=None, keepdims=np._NoValue, initial=np._NoValue,
         where=np._NoValue):
    return _wrapreduction(a, np.maximum, 'max', axis, None, out,
                          keepdims=keepdims, initial=initial, where=where)
File:      /usr/local/lib/python3.6/dist-packages/numpy/core/fromnumeric.py

这告诉我们 np.max(或 amax)将操作委托给名称相似的 max 方法。如果我们进一步挖掘,我们会发现该方法是 built-in,也就是说,它是我们无法轻易阅读的编译代码。这种情况在 numpy 中很常见。函数委托给类似命名的方法。除非您准备认真阅读 c 代码,否则这就是您所能得到的。只要你需要,除非你想成为 numpy developer/contributor.