You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python 带参数的累计求和实现问题

实现累加信用总额的函数方案

嘿,这个需求其实超容易搞定!你说得对,for循环完全没必要——我们要的是每次调用函数都能记住之前的累计值,核心就是让函数保留状态。给你几个实用的实现方式:

方案1:闭包(推荐,无全局变量污染)

闭包能让内部函数访问并保留外部函数的变量状态,既简洁又不会污染全局命名空间:

def create_credit_tracker():
    total = 0  # 初始计数设为0
    def add_credits(x):
        nonlocal total  # 声明要修改外部函数的变量
        total += x
        return total  # 可选:返回当前总额,方便即时查看结果
    return add_credits

# 用起来也很简单
add_credits = create_credit_tracker()
print(add_credits(3))  # 输出:3
print(add_credits(4))  # 输出:7

每次调用add_credits(x),都会自动把x加到之前的总额里,完美符合你的需求~

方案2:类(适合后续扩展功能)

如果之后你可能需要加重置总额、查询当前总额这类额外功能,用类会更清晰:

class CreditTracker:
    def __init__(self):
        self.total = 0  # 初始化信用总额为0
    
    def add_credits(self, x):
        self.total += x
        return self.total

# 使用示例
tracker = CreditTracker()
print(tracker.add_credits(3))  # 输出:3
print(tracker.add_credits(4))  # 输出:7
# 还能直接查看当前总额
print(tracker.total)  # 输出:7

方案3:全局变量(简单但不推荐)

如果只是快速测试,也可以用全局变量,但正式代码里不建议这么做——容易和其他代码的变量名冲突:

total_credits = 0

def add_credits(x):
    global total_credits
    total_credits += x
    return total_credits

print(add_credits(3))  # 输出:3
print(add_credits(4))  # 输出:7

内容的提问来源于stack exchange,提问作者Erich Purpur

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:56:14