Python3.x
在python3.x世界中,您可能应该使用一个
Signature对象:
import inspectdef get_default_args(func): signature = inspect.signature(func) return { k: v.default for k, v in signature.parameters.items() if v.default is not inspect.Parameter.empty }Python2.x(旧答案)
args /默认值可以组合为:
import inspecta = inspect.getargspec(eat_dog)zip(a.args[-len(a.defaults):],a.defaults)
这
a.args[-len(a.defaults):]是带有默认值的参数,显然
a.defaults是相应的默认值。
您甚至可以将输出传递
zip给
dict构造函数,并创建适合关键字解压缩的映射。
查看文档,此解决方案仅适用于python2.6或更高版本,因为我假设
inspect.getargspec返回一个 命名的tuple
。较早的版本返回一个 常规元组 ,但是相应地修改它非常容易。这是一个与较旧(和较新)版本一起使用的版本:
import inspectdef get_default_args(func): """ returns a dictionary of arg_name:default_values for the input function """ args, varargs, keywords, defaults = inspect.getargspec(func) return dict(zip(args[-len(defaults):], defaults))
想一想:
return dict(zip(reversed(args), reversed(defaults)))
也会起作用,并且对某些人可能更直观。



