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

Python函数调用时变量未正确累加问题求助

解决函数调用次数统计的问题

你的代码存在两个核心问题:

  • 函数内部的num_of_charts是局部变量,每次调用score_chart()时都会重新创建,所以每次返回的都是新赋值的1,无法实现累计计数。
  • 代码里的num_of_charts=+1是语法错误,这是将变量赋值为正1,而非自增操作,正确的自增写法是num_of_charts += 1——但即便修正这个写法,局部变量的问题仍会导致计数无法累计。

以下是三种可行的解决方案:

方案1:利用函数属性(简单直接)

Python中函数本身是对象,可以直接给它添加属性来保存计数,避免局部变量重置的问题:

def score_chart():
    score_chart.num_of_charts += 1
    return score_chart.num_of_charts

# 初始化函数的计数属性
score_chart.num_of_charts = 0

# 测试调用
print(score_chart())  # 输出1
print(score_chart())  # 输出2

方案2:使用闭包(封装性更好)

通过外部函数封装计数变量,内部函数引用该变量,既能保留状态,又不会污染全局命名空间:

def create_counter():
    count = 0
    def score_chart():
        nonlocal count  # 声明使用外部函数的变量
        count += 1
        return count
    return score_chart

# 创建计数器实例
score_chart = create_counter()

# 测试调用
print(score_chart())  # 输出1
print(score_chart())  # 输出2

方案3:使用全局变量(不推荐,适合简单场景)

把计数变量声明为全局变量,函数内部通过global关键字引用它:

count = 0

def score_chart():
    global count
    count += 1
    return count

# 测试调用
print(score_chart())  # 输出1
print(score_chart())  # 输出2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 22:01:17