从函数中的函数调用变量

时间:2020-03-19 13:25:54

标签: python function variables

快速提问。我首先定义了一个函数 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 用于我的计算。

预先感谢一堆!

3 个答案:

答案 0 :(得分:2)

我无法完全跟随,但我认为您的xyzp0, 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

首先它将打印价格,然后打印价格*绝对值。由于这两个功能属于同一类,因此我建议使用一个类。

相关问题