在方法中将字符串传递给 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)
努力将变量引用传递给嵌套函数。在我的用例中,使用字典不是一个选项。它是一个大大简化的 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)