如何将变量传递给eval函数?
我已经尝试过在此处发布一些解决方案,以及阅读Python文档
我有这部分代码“ v”,我想在我代码的另一部分中重复使用。这是一个片段:
library(stringr)
input <- (c("the sum of $175,000,000 and the sum", "the sum of $20,000,000 and the sum", "the sum of $100,000,000 and the sum"))
df<-as.data.frame(input)
#extract the $, the digits and commas
#then remove the $ and commas
df %>% mutate(amount = str_remove_all(str_extract(input,"\\$[0-9,]+"), "[\\$,]"))
然后,我想对以下内容进行操作:
v = lambda r5, cdate : somefunc(r4, cdate) + math.exp(-t_3m*r1 - t_6m*r2 - t_1y*r3 - t_2y*r4 - retfrac(d[4], d[5], cdate, eoffset = 730)*r5) + \
math.exp(-t_3m*r1 - t_6m*r2 - t_1y*r3 - t_2y*r4 - t_3y*r5)
当我尝试对此进行评估时,出现一条错误消息:
w = "v(r5, cdate) + math.exp(-t_3m*r1 - t_6m*r2 - t_1y*r3 - t_2y*r4 - t_3y*r5)*(0"
# + some other expressions that I have to build up using a for loop since there is no closed form solution
func = lambda r6, cdate = i[30] : (five_year + (coupon_five_year/2)*(1-(ia_5y/.5))) - (coupon_five_year/2)*(eval(w)) - 100*math.exp(-t_3m*r1 - t_6m*r2 - t_1y*r3 - t_2y*r4 - t_3y*r5 - t_5y*r6)
r6 = fsolve(func, xguess)[0]
一旦我从w的表达式中删除v,我就会得到t_3m的NameError,它会遍历所有变量。有人可以帮我吗?
答案 0 :(得分:1)
eval函数接受两个附加参数,以为其提供全局和局部变量。
您只需要这样称呼它:eval(w,globals(),locals())
假设调用eval()时,在w字符串中进行的变量引用全部在范围内。