使用 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
支持的唯一函数是使用 def
或 lambda
在 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。
我正在尝试了解一个函数有哪些选项和参数,以便我可以充分利用它。例如,我想了解默认 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
支持的唯一函数是使用 def
或 lambda
在 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。