首页 > 解决方案 > 通过指向该函数的指针获取函数参数值?

问题描述

我想通过指向该函数的指针来获取函数参数的值。

def cons(a, b):
    def pair(f):
        return f(a, b)
    return pair

def car(cons):
    # local_a = cons.a
    # return local_a
    pass

if __name__ == '__main__':
    assert car(cons(3, 4)) == 3

标签: pythonpointersfunction-pointers

解决方案


通过签名函数为函数创建签名很容易:从检查导入签名

def someMethod(self, arg1, kwarg1=None):
    pass

sig = signature(someMethod)

现在,您可以通过字符串快速查看其参数:

str(sig)  # returns: '(self, arg1, kwarg1=None)'

或者您也可以通过 sig.parameters 获取属性名称到参数对象的映射。

params = sig.parameters 
print(params['kwarg1']) # prints: kwarg1=20

此外,您可以在 sig.parameters 上调用 len 来查看此函数所需的参数数量:

print(len(params))  # 3

params 映射中的每个条目实际上是一个 Parameter 对象,它具有使您的生活更轻松的更多属性。例如,现在可以通过以下方式轻松获取参数并查看其默认值:

kwarg1 = params['kwarg1']
kwarg1.default # returns: None

参数中包含的其余对象也是如此。


推荐阅读