如何在另一个函数中使用来自一个函数的数据

时间:2018-01-30 11:31:23

标签: python function

我有一个关于在另一个函数中使用函数数据的问题。 当我尝试以下内容时:

import pandas as pd
def input(param1, param2, param3 = 4):

    df = (param1 + param2 + param3)
    pd.options.display.float_format = '{:,.0f}'.format

    return df

def calculator(df):
    df2 = df * df
    print(df2)

    return

我得到以下结果:

>>> input(2,2,2)
6

为什么打印出6而不是36?如何编写它以便使用df来计算df2

3 个答案:

答案 0 :(得分:1)

我发现您的代码没有任何问题,因为您拨打6,所以input会收到calculator,但如果您使用该结果致电In [2]: input(2,2,2) Out[2]: 6 In [3]: calculator(6) 36

h45.insertBefore(h45,age);

答案 1 :(得分:0)

sortArrayBy: function(a, b, sortKey , isAscending) { if (parseFloat(a[sortKey]) < parseFloat(b[sortKey])) return isAscending ? -1 : 1; if (parseFloat(a[sortKey]) > parseFloat(b[sortKey])) return isAscending ? 1 : -1; return 0; }, 的返回值是对传递给它的参数求和,即input()

您永远不会调用2 + 2 + 2 = 6函数。因此,要在calculator中使用input的结果,您需要返回结果,然后传递给calculator函数。

calculator

注意:我建议您不要调用自己编写的函数def input(param1, param2, param3 = 4): df = (param1 + param2 + param3) return df def calculator(df): df2 = df * df print(df2) outer_df = input(2,2,2) calculator(outer_df) # 36 ,因为这会影响内置的input函数。

答案 2 :(得分:0)

还有另一种方法可以实现这一点,从函数式编程中调用一个特性:

from toolz import compose

def my_input(param1, param2, param3 = 4):
    df = (param1 + param2 + param3)
    return df

def calculator(df):
    df2 = df * df
    return df2

comp_calc = compose(calculator, my_input)

comp_calc(2, 2, 2)  # 36

我们已经创建了一个复合函数,现在您不必使用嵌套函数。如果您有多个功能相互馈送,这通常很有用。它使您的代码更清晰,更容易理解。