gpt4 book ai didi

python - 在这种情况下如何使用泛函?

转载 作者:太空宇宙 更新时间:2023-11-03 18:06:47 24 4
gpt4 key购买 nike

我有一个 Pandas 数据框,想用它做不同的事情。现在我的函数具有以下结构:

def process_dataframe(df, save_to_file, print_to_screen, etc):
...
if save_to_file:
df.to_csv(filename)
elif print_to_screen:
print df
elif...

这是一个丑陋的 if else 情况。我想用函数代替。函数指针。像这样的东西。我创建了几个函数:

def save_to_file(df, filename):
return create_function(to_csv, filename???)
def print_to_screen(df):
return create_function(print)

这意味着我可以将函数的结构更改为这一行:

result = process_dataframe(save_to_file)
...
...
def process_dataframe(df, my_functional):
return my_functional(df)

问题是我不明白语法。例如,如何在“save_to_file()”中返回类成员函数“.to_csv”? “save_to_file()”是什么样子的?它需要哪些参数?

当然,我可以使用 lambda 而不必定义每个函数。但我想先了解如何定义函数。使用 lambda 的下一步,我可以自己弄清楚。

最佳答案

我会确保这实际上是您想要做的,但假设是这样,您可以编写一个调用函数(并传递参数)的函数,如下所示:

def process_df(df, function, *args, **kwargs):
function(df, *args, **kwargs)

并定义您的两个操作。

def print_to_screen(df):
print df

def save_to_file(df, filename):
df.to_csv(filename)

然后你可以随意使用它们:

In [193]: df = pd.DataFrame([[1,2,3],[2,4,5]], columns=['a','b','c'])

In [197]: process_df(df, print_to_screen)
a b c
0 1 2 3
1 2 4 5

In [198]: process_df(df, save_to_file, 'temp.csv')
#writes temp.csv

关于python - 在这种情况下如何使用泛函?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26731587/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com