如何将函数返回对象赋值给变量且忽略函数内部的display输出
解决方案
方案1:添加显式控制参数(更推荐,灵活可控)
你可以给函数增加一个布尔类型的开关参数,自主控制每次调用是否需要输出df1、df2,逻辑清晰不易出问题:
def create_dataframe(show_output: bool = True): df1 = pd.DataFrame(x) df2 = pd.DataFrame(x_2) df3 = pd.DataFrame(x_3) if show_output: display(df1) display(df2) return df3
调用规则:
- 需要展示两个DataFrame时,直接调用
create_dataframe()即可 - 仅需要获取返回值不需要输出时,调用
correct_df = create_dataframe(show_output=False),不会产生任何display输出
方案2:自动识别首次调用(隐式状态记录)
如果你希望函数自动实现仅第一次调用展示输出,后续调用都只返回结果,可以用函数属性存储调用状态,不需要手动传参:
def create_dataframe(): df1 = pd.DataFrame(x) df2 = pd.DataFrame(x_2) df3 = pd.DataFrame(x_3) # 首次调用时函数没有_has_run属性,会执行展示逻辑 if not hasattr(create_dataframe, "_has_run"): display(df1) display(df2) create_dataframe._has_run = True return df3
调用规则:
- 第一次调用
create_dataframe()会正常展示df1、df2 - 之后所有调用
correct_df = create_dataframe()都不会产生display输出,仅返回df3 - 如果需要重置状态让下一次调用再次展示,执行
del create_dataframe._has_run即可
注意:隐式状态会在重新定义函数、重启notebook内核时自动重置
内容的提问来源于stack exchange,提问作者Sam M
相关产品推荐
相关产品推荐

