如何实现用####包裹函数、用#####分隔多函数的文本输出?
嘿,这个需求挺实用的,尤其是当你要区分不同函数的大段输出时,我来给你分享两种简洁的实现方式——核心思路是用包装逻辑把重复的标记代码抽离出来,不用挨个修改你的业务函数~
实现方案
一、用####包裹单个函数输出:装饰器/包装函数
不管你用什么语言,最优雅的方式是写一个包装函数(或装饰器),把原来的输出函数套进去,自动在执行前后添加####。这样不用修改每个函数的内部代码,复用性极强。
Python 示例(装饰器方式)
# 定义装饰器,负责添加####包裹 def wrap_with_double_hash(func): def wrapper(*args, **kwargs): print("####") # 执行原函数(原函数直接print输出) func(*args, **kwargs) print("####") return wrapper # 给你的业务函数加上装饰器 @wrap_with_double_hash def data_process_func(): print("处理用户数据中...") print("已完成1000条数据清洗") print("输出统计结果:均值=123.4,中位数=118.9") @wrap_with_double_hash def report_generate_func(): print("生成月度报告...") print("报告包含:用户留存率、转化漏斗分析") print("报告已保存到本地路径:./reports/monthly.pdf")
如果你的函数是返回字符串而不是直接print,装饰器可以稍作调整:
def wrap_with_double_hash(func): def wrapper(*args, **kwargs): output_content = func(*args, **kwargs) # 拼接####后打印 print(f"####\n{output_content}\n####") return wrapper @wrap_with_double_hash def get_analysis_result(): return """用户行为分析结果: - 日均活跃用户:5000+ - 核心功能使用率:78% - 用户流失率:12%"""
二、用#####作为函数输出的分隔线
这部分可以分两种场景:
1. 手动调用时添加分隔线
如果是逐个调用函数,直接在函数调用之间插入print("#####")即可:
data_process_func() print("#####") report_generate_func() print("#####") get_analysis_result()
2. 批量执行函数时自动添加分隔线
如果有多个函数需要按顺序执行,可以写一个批量执行函数,自动在函数之间插入分隔线,避免重复写print:
def run_funcs_with_separator(func_list): for idx, func in enumerate(func_list): # 不是第一个函数的话,先打印分隔线 if idx != 0: print("#####") func() # 把需要执行的函数放进列表,自动执行加分隔 run_funcs_with_separator([data_process_func, report_generate_func, get_analysis_result])
其他语言的思路(以JavaScript为例)
核心逻辑完全一致,用包装函数实现:
// 包装函数,添加####包裹 function wrapWithDoubleHash(func) { return function(...args) { console.log("####"); func(...args); console.log("####"); }; } // 业务函数 const processData = wrapWithDoubleHash(() => { console.log("处理数据中..."); console.log("数据处理完成"); }); const generateReport = wrapWithDoubleHash(() => { console.log("生成报告中..."); console.log("报告生成完成"); }); // 调用加分隔线 processData(); console.log("#####"); generateReport();
内容的提问来源于stack exchange,提问作者SafenessAndSafe
相关产品推荐
相关产品推荐

