Python中的反射:如何在Python 2.7中查看函数的所有参数

AsT*_*TeR 5 python reflection python-2.7

我正在寻找一种方法将函数的参数放入包含其名称的字典中,默认值为any。

我已经看到该inspect模块有一个getcallargs函数,但它可以引发异常,并期望在检查函数需要时提供参数。我正在寻求某种方法来访问此结果,而无需事先了解该功能。

这必须与 python 2.7 兼容。

def a_function_somewhere(arg1, arg2=None, arg3=12):
    pass

r = the_function_i_m_looking_for(a_function_somewhere)
# Expected r {'arg1': Special.NoDefaultValue, 'arg2': None, 'arg3': 12}
Run Code Online (Sandbox Code Playgroud)

jfs*_*jfs 5

>>> inspect.getargspec(a_function_somewhere)
ArgSpec(args=['arg1', 'arg2', 'arg3'],
        varargs=None, keywords=None, defaults=(None, 12))
Run Code Online (Sandbox Code Playgroud)