快速提问。我首先定义了一个函数 prc_chgd ,该函数最终给了我一个变量 ans ,但是作为一个中间步骤,我给了我变量 price 。 现在,我想编写一个后续函数 hdg ,该函数使用相同的输入顺序,使用中间变量 price 计算其他内容。不幸的是,我不知道如何:S
def prc_chgd(p0, ta, ya, tb, yb, cb, delta1_y, delta2_y):
price = xyz
ans = price*abc
def hedge(p0, ta, ya, tb, yb, cb, delta1_y, delta2_y):
from prc_chgd(p0, ta, ya, tb, yb, cb, delta1_y, delta2_y) import price
ans = price*xxxx
问题在于,函数是笔记本分配中的两个单独的练习,我可能不得不用新的输入(尽管顺序相同)重新计算前面的函数,而只能选择定义的变量 price 用于我的计算。
预先感谢一堆!
答案 0 :(得分:2)
我无法完全跟随,但我认为您的xyz
是p0, ta, ya
等的神秘组合。
在这种情况下,您应该将价格计算放到一个单独的函数中,例如
def calc_price(p0, ta, ya, tb, yb, cb, delta1_y, delta2_y):
return xyz # calculated with these inputs
def prc_chgd(p0, ta, ya, tb, yb, cb, delta1_y, delta2_y):
price = calc_price(p0, ta, ya, tb, yb, cb, delta1_y, delta2_y)
ans = price * abc
def hedge(p0, ta, ya, tb, yb, cb, delta1_y, delta2_y):
price = calc_price(p0, ta, ya, tb, yb, cb, delta1_y, delta2_y)
ans = price * xxxx
如果您想避免两次计算price
,也可以
def calc_price(p0, ta, ya, tb, yb, cb, delta1_y, delta2_y):
return xyz # calculated with these inputs
def prc_chgd(price):
ans = price * abc
def hedge(price):
ans = price * xxxx
将其calc_price()
的呼叫频率留给呼叫者。
答案 1 :(得分:1)
如果要这样,可以从函数中返回多个值:
def prc_chgd(p0, ta, ya, tb, yb, cb, delta1_y, delta2_y):
price = xyz
ans = price*abc
return price, ans
def hedge(p0, ta, ya, tb, yb, cb, delta1_y, delta2_y):
price, ans = prc_chgd(p0, ta, ya, tb, yb, cb, delta1_y, delta2_y)
ans = price*xxxx
答案 2 :(得分:-1)
返回多个返回值的函数应在python中产生:
def prc_chgd(p0, ta, ya, tb, yb, cb, delta1_y, delta2_y):
price = xyz
yield price
ans = price*abc
yield ans
您可以根据需要产生任意多个值。 然后,您可以遍历for循环中的所有答案:
for total in prc_chgd(1,2,3,4,5,6,7,8):
print total
首先它将打印价格,然后打印价格*绝对值。由于这两个功能属于同一类,因此我建议使用一个类。