Вызов переменной из функции в функции - PullRequest
1 голос
/ 19 марта 2020

Быстрый вопрос. Сначала я определил функцию 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

Дело в том, что функции - это два отдельных упражнения в назначении ноутбука, и мне, возможно, придется пересчитать предыдущую функцию с новыми входами (в том же хотя и заказывайте), и выбирайте только определенную переменную цена для моих расчетов.

Заранее большое спасибо!

Ответы [ 3 ]

2 голосов
/ 19 марта 2020

Я не могу полностью следовать, но я думаю, что ваша xyz - это какая-то загадочная комбинация p0, ta, ya et c.

В этом случае вы должны поместить расчет цены в отдельную функцию, такую ​​как

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 голос
/ 19 марта 2020

Вы можете вернуть более одного значения из вашей функции, если хотите так:

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
0 голосов
/ 19 марта 2020

Функция, которая возвращает несколько возвращаемых значений, должна давать python:

def prc_chgd(p0, ta, ya, tb, yb, cb, delta1_y, delta2_y):
   price = xyz
   yield price
   ans   = price*abc
   yield ans

Вы можете выдавать столько значений, сколько хотите. Затем вы можете перебрать все ответы в течение l oop:

for total in prc_chgd(1,2,3,4,5,6,7,8):
   print total

Сначала будет напечатана цена, затем цена * abs. Поскольку две функции принадлежат друг другу, я рекомендую использовать класс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...