如何从prc_chgd函数中获取中间变量price用于hedge函数计算?
解决函数间共享中间计算变量的问题
我来帮你搞定这个问题~你现在遇到的核心问题是:想在hedge函数里复用prc_chgd计算出来的price局部变量,但之前尝试的语法完全不对(那是模块导入的写法,根本没法提取函数内部的临时变量)。下面给你两个实用的解决方案,都能满足你“用相同输入重新计算前序函数并提取price”的需求:
方案1:让prc_chgd返回多个结果
直接修改prc_chgd,让它同时返回最终的ans和中间变量price,这样hedge调用它时就能拿到需要的price了:
def prc_chgd(p0, ta, ya, tb, yb, cb, delta1_y, delta2_y): price = xyz # 这里是你原本计算price的逻辑 ans = price * abc # 这里是你原本计算ans的逻辑 return ans, price # 同时返回两个值 def hedge(p0, ta, ya, tb, yb, cb, delta1_y, delta2_y): # 调用prc_chgd,用下划线接收不需要的ans,只取price _, price = prc_chgd(p0, ta, ya, tb, yb, cb, delta1_y, delta2_y) ans = price * xxxx # 这里是hedge函数的计算逻辑 return ans
这个方法简单直接,不需要大改原有代码,完全符合你“重新计算前序函数并提取price”的要求。
方案2:拆分出独立的price计算函数(更推荐)
如果price的计算逻辑是独立的,把它抽成一个单独的小函数,这样两个主函数都可以调用它,既能避免重复代码,后续维护也更方便:
def calculate_price(p0, ta, ya, tb, yb, cb, delta1_y, delta2_y): # 把原来prc_chgd里计算price的逻辑单独移到这里 price = xyz return price def prc_chgd(p0, ta, ya, tb, yb, cb, delta1_y, delta2_y): price = calculate_price(p0, ta, ya, tb, yb, cb, delta1_y, delta2_y) ans = price * abc return ans def hedge(p0, ta, ya, tb, yb, cb, delta1_y, delta2_y): price = calculate_price(p0, ta, ya, tb, yb, cb, delta1_y, delta2_y) ans = price * xxxx return ans
这个方案的优势在于:以后如果price的计算逻辑需要调整,你只需要修改calculate_price这一个地方,不用同时改两个函数,代码的复用性和可维护性更强。
为什么你原来的方法不行?
你之前写的from prc_chgd(...) import price是完全错误的语法——import只能用来导入模块、模块里的函数/类/全局变量,根本没法从函数的调用结果里提取内部的局部变量。函数内部的局部变量在函数执行结束后就会被销毁,只有通过return返回出来,或者像方案2那样把计算逻辑抽出来,才能被其他函数复用。
内容的提问来源于stack exchange,提问作者germany
相关产品推荐
相关产品推荐

