将字符串传递给方法中的eval



难以将变量引用传递给嵌套函数。在我的用例中,使用字典不是一个选项。这是一个非常简化的MRE(实际使用传递一个带有许多嵌套对象的对象(。

def func(reference):
eval('trueVal=' + reference)
print(trueVal)                 #Expecting trueVal=15000
trueValue = 15000
reference = 'trueValue'
func(reference)

eval计算表达式。然后,可以将示例中表达式的结果显式分配给trueVal

trueVal = eval(reference)

我不赞成使用eval或exec,100次中有99次,有更好的方法可以做到这一点,dictionary不是唯一的选择,但如果不发布您的问题,就不可能提供更好的方法来解决它。下面是一个不硬编码变量名的示例,供参考。但实际上,总有一种可能比eval或exec更好的方法。

def func(reference, value):
exec(reference + '="' + str(value) +'"')
print(reference, ":", eval(reference))                 #Expecting trueVal=15000
trueValue = 15000
reference = 'trueVal'
func(reference, trueValue)

相关内容

  • 没有找到相关文章

最新更新