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
相关产品推荐
相关产品推荐

