Python中仅修改func2实现被调用时计数器累加的方法
解决方案
问题核心是func2每次调用时都会将count初始化为0,导致无法累计所有token的总数。我们可以通过函数属性存储累计值,同时利用atexit模块在程序结束时自动打印最终统计结果,完全满足仅修改func2的要求。
修改后的func2代码如下:
def func2(token): import atexit # 初始化累计计数器和退出打印逻辑,仅第一次调用时执行 if not hasattr(func2, 'total_count'): func2.total_count = 0 @atexit.register def print_total(): print(func2.total_count) # 最终输出总计数4 nltk_tokens = nltk.word_tokenize(token) func2.total_count += len(nltk_tokens) # 移除原有的单次调用打印逻辑,避免输出中间值
代码说明
- 函数属性
total_count:用来跨调用存储累计的token总数,不会在每次调用func2时被重置。 atexit.register:注册一个程序退出时自动执行的函数,负责打印最终的累计结果。- 移除原代码中每次调用都打印当前
count的语句,避免输出多个无效的中间值。
运行修改后的代码,程序最终会输出4,与预期结果一致。
内容的提问来源于stack exchange,提问作者TheRi
相关产品推荐
相关产品推荐

