使用 inspect.getargfullspec() 找出函数不工作

Using inspect.getargfullspec() to find out about functions not working

我正在尝试了解一个函数有哪些选项和参数,以便我可以充分利用它。例如,我想了解默认 print() 函数接受什么样的参数,也许还有一些关于参数的文档,例如每个参数的作用,每个参数的选项等等。我四处阅读,发现 getargfullspec() 是方法。我是对的,还是有更简单的方法来做到这一点?

总之,我试过了,但是出错了。

import inspect
inspect.getfullargspec(print)

它给出了这个错误。

TypeError: unsupported callable

知道为什么吗?

查找函数的最佳方法是阅读其文档字符串并查看其实现方式。这可以通过 运行 help() 函数

来完成

I.E - help(int) 向您展示了 int() 函数可以做什么

class int(object)
 |  int(x=0) -> int or long
 |  int(x, base=10) -> int or long
 |  
 |  Convert a number or string to an integer, or return 0 if no arguments
 |  are given.  If x is floating point, the conversion truncates towards zero.
 |  If x is outside the integer range, the function returns a long instead.
 |  
 |  If x is not a number or if base is given, then x must be a string or
 |  Unicode object representing an integer literal in the given base.  The
 |  literal can be preceded by '+' or '-' and be surrounded by whitespace.
 |  The base defaults to 10.  Valid bases are 0 and 2-36.  Base 0 means to
 |  interpret the base from the string as an integer literal.
 |  >>> int('0b100', base=0)
 |  4

或者例如-

import datetime
help(datetime.datetime.strptime)

将return

strptime(...)
    string, format -> new datetime parsed from a string (like time.strptime()).

您可以阅读有关 help() 函数的更多信息 here

inspect.getfullargspec 支持的唯一函数是使用 deflambda 在 Python 代码中创建的函数。来自 docs:

inspect.getfullargspec(func)

Get the names and default values of a Python function's arguments.

强调我的。 print 然而在技术上不是 Python 函数,因为它是用 C:

编写的
>>> import types
>>> # FunctionType represents Python functions
>>> isinstance(print, types.FunctionType)
False
>>> # BuiltinFunctionType represents C functions
>>> isinstance(print, types.BuiltinFunctionType)
True
>>>

这就是为什么要将 TypeError 传递给 inspect.getfullargspec 的原因。


此外,使用 inspect.getfullargspec 获取有关函数的信息仅在元编程中真正使用。如果您只是简单地寻找文档或使用方法,您应该在线使用help in the interactive interpreter as @thomas said or read the documentation