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

Passing a string to eval in method

努力将变量引用传递给嵌套函数。在我的用例中,使用字典不是一个选项。它是一个大大简化的 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 次,有更好的方法,字典不是唯一的选择,但如果不发布您的问题,就不可能提供更好的方法来处理它.下面是一个参考示例,它可以在不对变量名称进行硬编码的情况下工作。但实际上总是有比 eval 或 exec 更好的方法。

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

trueValue = 15000
reference = 'trueVal'
func(reference, trueValue)