下面是一个示例函数:
def test_function(test_df):
test_df = do_something1(test_df)
test_df = do_something2(test_df)
test_df = do_something3(test_df)
return test_df
这里我输入一个pandas Dataframe ,在输入的 Dataframe 上调用一些其他函数,并在最后输出它。
我的问题是,有没有一种方法可以定义Python Package 器(或任何其他方法),检查后,每一行,如果你输入的 Dataframe (test_df)是空的,如果是,返回一个空的dataframe?我这样做的目的是,如果这些函数中的任何一个过滤数据,使test_df为空,代码将在任何后续的函数调用中中断。我正在寻找的 Package 器的等效函数是:
def test_function(test_df):
test_df = do_something1(test_df)
if test_df.empty:
return pd.DataFrame()
test_df = do_something2(test_df)
if test_df.empty:
return pd.DataFrame()
test_df = do_something3(test_df)
return test_df
我认为对于一些函数调用,空检查是好的,但认为这会降低可读性,并且随着函数调用的数量增加,它会变得越来越混乱。
我已经看过定义自定义 Package 器,但它们似乎将函数作为一个整体来看待,而不是逐行地看待。我也看过上下文管理器,但它似乎不太符合我的目的。不是真的想改变代码太多,因此为什么一个好的 Package 器是理想的。任何其他具有相同输出的干净解决方案都一样好。
2条答案
按热度按时间9gm1akwq1#
我只使用一个循环。
hts6caw32#
装饰器并不是用来修改被装饰的函数的内容的。所以,根据你的问题,你不能(或者至少不应该)为
test_function
创建一个装饰器。当你想在函数调用之前和/或之后添加一些行为时,它们最好用。如果你想要一个装饰器,你可以在你调用的函数上使用它,它看起来像这样:
修饰一个函数相当于这样:
您可以有效地用函数的 Package 版本替换该函数。
或者,您可以只为结果创建一个 Package 器,这意味着不需要向定义中添加额外的代码。