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

Python函数返回值打印报错:average未定义的原因及修正

问题分析与修正方案

原代码错误原因

原代码如下:

def calculate_average(numbers):
    total = sum(numbers)
    average = total / len(numbers)
    return average
    
print(average)
calculate_average([34, 30, 12])

报错NameError: name 'average' is not defined的核心原因是变量作用域规则:

  • 函数calculate_average内部定义的average是局部变量,只能在函数内部使用,函数外部无法直接访问这个变量。
  • 调用calculate_average([34, 30, 12])时,函数确实返回了计算好的平均值,但你没有把这个返回值保存到变量里,也没有直接使用它,导致返回的结果没有被利用。

修正后的代码(两种常用方式)

方式一:保存返回值到变量后打印

def calculate_average(numbers):
    total = sum(numbers)
    average = total / len(numbers)
    return average

# 将函数返回值赋值给外部变量
result = calculate_average([34, 30, 12])
# 打印变量值
print(result)

方式二:直接打印函数的返回值

def calculate_average(numbers):
    total = sum(numbers)
    average = total / len(numbers)
    return average

# 直接把函数调用作为print的参数,打印返回结果
print(calculate_average([34, 30, 12]))

关键知识点说明

  • 函数的return语句负责把计算结果传递出函数,但这个结果需要被“接收”才能使用:要么赋值给一个外部变量,要么直接作为参数传给其他函数(比如print)。
  • 局部变量的作用域仅限于定义它的函数内部,外部代码不能直接引用,这是Python的基础作用域规则,用于避免变量名冲突、保护函数内部逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 17:42:51