通过指向此函数的指针获取函数参数值?
Get function arguments value by pointer to this function?
我想通过指向该函数的指针获取函数参数的值。
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
通过签名函数很容易为函数创建签名:
从检查导入签名
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
参数中包含的其余对象也类似。
你走错了路。查看问题新版本中的代码,您正在尝试提取 Church pair.
的第一个元素
cons(3, 4)
求值为一个函数,当传递给另一个函数 f
、returns f(3, 4)
时。要提取 3
,您应该向它传递一个带有两个参数的函数和 returns 它的第一个参数:
def car(pair):
def firstarg(x, y):
return x
return pair(firstarg)
然后car(cons(3, 4))
调用cons(3, 4)(firstarg)
,调用firstarg(3, 4)
,returns3
.
我想通过指向该函数的指针获取函数参数的值。
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
通过签名函数很容易为函数创建签名: 从检查导入签名
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
参数中包含的其余对象也类似。
你走错了路。查看问题新版本中的代码,您正在尝试提取 Church pair.
的第一个元素cons(3, 4)
求值为一个函数,当传递给另一个函数 f
、returns f(3, 4)
时。要提取 3
,您应该向它传递一个带有两个参数的函数和 returns 它的第一个参数:
def car(pair):
def firstarg(x, y):
return x
return pair(firstarg)
然后car(cons(3, 4))
调用cons(3, 4)(firstarg)
,调用firstarg(3, 4)
,returns3
.