Как передать переменные в функцию eval?
Я попробовал некоторые решения, размещенные здесь на SO, а также прочитал документацию по Python
У меня есть этот раздел кода 'v', который я хотел бы использовать в другой части моего кода. Вот фрагмент кода:
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]
Когда я пытаюсь оценить это, я получаю сообщение об ошибке:
NameError: name 'v' is not defined
Как только я удаляю v из выражения для w, я получаю NameError для t_3m, и он просто пропускает все переменные. Может ли кто-нибудь помочь мне?