我有一个关于在另一个函数中使用函数数据的问题。 当我尝试以下内容时:
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
?
答案 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
我们已经创建了一个复合函数,现在您不必使用嵌套函数。如果您有多个功能相互馈送,这通常很有用。它使您的代码更清晰,更容易理解。