Python:return语句仍然没有从函数返回

时间:2015-06-11 19:55:00

标签: python function return

我看过所有其他的"返回没有"这里的问题,似乎都没有解决我的问题。

rates = []
for date in unformatted_returns: # Please ignore undefined variables, it is redundant in this context
    if date[0] >= cutoff_date:
        date_i = unformatted_returns.index(date)
        r = date_initialize(date[0], date_i)
        print "r is returned as:", r
        rates.append(r)
        print date[0]
    else:
        continue

def date_initialize(date, date_i):
        print " initializing date configuration"
        # Does a bunch of junk
        rate_of_return_calc(date_new_i, date_i)

def rate_of_return_calc(date_new_i, date_i):
        r_new = unformatted_returns[int(date_i)] # Reverse naming, I know
        r_old = unformatted_returns[int(date_new_i)] # Reverse naming, I know
        if not r_new or not r_old:
            raise ValueError('r_new or r_old are not defined!!')
            # This should never be true and I don't want anything returned from here anyhow
        else:
            ror = (float(r_new[1])-float(r_old[1]))/float(r_old[1])
            print "ror is calculated as", ror
            return ror

它们自身的功能很好,输出就像这样:

initializing date configuration
('2014-2-28', u'93.52')
ror is calculated as -0.142643284859
r is returned as: None
2015-2-2
>>> 

ror是正确的值,但是为什么在我写好return ror时它不会被返回?对我没有任何意义

3 个答案:

答案 0 :(得分:3)

你也需要在这里归还

def date_initialize(date, date_i):
        print " initializing date configuration"
        # Does a bunch of junk
        return rate_of_return_calc(date_new_i, date_i)

答案 1 :(得分:0)

date_initialize中,您需要返回返回所需值的函数。明确地,从

更改您的电话
rate_of_return_calc(date_new_i, date_i)

return rate_of_return_calc(date_new_i, date_i)

您第一次致电date_initialize,不会返回任何内容。因此,当您致电rate_of_return_calc时,您会收到该值,然后将其丢弃。您需要返回它以将值传递给主函数。

答案 2 :(得分:0)

您还需要返回date_initialize中的值:

def date_initialize(date, date_i):
    print " initializing date configuration"
    # Does a bunch of junk
    return rate_of_return_calc(date_new_i, date_i)