我感兴趣的是尽可能找出推断变量的实际值。例如,我想知道传递给函数的值或参数是什么
arg = True
f(param=arg)
或者在更复杂的情况下,从kwargs
kwargs = {'param': True}
f(**kwargs)
我注意到jedi.inference.compiled
包含诸如之类的类,CompiledValue
并且我已设法使用此类方案从推理中访问它们
from jedi import Script
code = """
kwargs = {'param': True}
f(**kwargs)
"""
comp_vals = [infer._name.infer() for infer in Script(code).infer(2, 5)]
print([v.get_safe_value() for v in comp_vals[0].py__simple_getitem__('param')])
这允许提取价值[True]
,但我很好奇是否有更好的方法来实现它而无需访问私有成员并且以更通用的方式。