python - 通过指向该函数的指针获取函数参数值?
问题描述
我想通过指向该函数的指针来获取函数参数的值。
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
参数中包含的其余对象也是如此。
推荐阅读
- html - 有没有办法通过仅使用 CSS 或 HTML 而没有 Javascript 来淡入滚动动画?
- javascript - 客户端相对寻址并且不允许在应用程序 URL 中使用斜杠
- java - 从 Firestore 存储信息后,阵列列表自动清除
- javascript - 尝试在操作中使用异步代码时的最佳实践
- excel - 有没有办法使用 Excel 作为库而不是 Apache POI
- c# - CSharp.Workspaces 的 RuntimeCompilation 依赖问题
- python - OpenCV:在圆圈内找到小黑(黑)点
- python-3.x - TkInter 的 __init__ 说全局变量不存在
- python - 问题是在 pandas 中使用进度条
- java - 如何从数字数组中找出方差?