Python初学者遇return outside function语法错误求通俗解答
Python代码报错原因解析
核心报错原因
你遇到的SyntaxError: 'return' outside function语法错误,核心原因是Python对函数体的判断完全依赖缩进,你的代码缩进混乱,导致解释器认为return语句不在test函数内部。
Python规定:def定义函数后,冒号之后所有属于该函数的代码,必须保持统一的缩进量(通常是4个空格),一旦某行和前面对齐规则不一致,解释器就认为函数体结束了。
具体错误点
def test() :后的values = [4, 7, 8, 9, -5]行完全没有缩进,解释器此时已经判定test函数的函数体为空,后续代码都不属于test函数- 后续
if语句、tag定义等行缩进量不统一,return行又额外多了缩进,进一步加剧了缩进混乱 - 除了语法报错外,还有隐藏逻辑问题:
if values[4] < 0 : values.remove(values[4])执行后,列表长度会从5变为4,后续直接赋值values[4]= 4会触发IndexError索引越界错误
修复后的可运行代码
def test() : # do not change this line! values = [4, 7, 8, 9, -5] # do not change this line! if values[4] < 0 : values.remove(values[4]) tag = (values[0] + values[1])/2 values.insert(1, tag) values[0] = 9 # 修复索引越界问题:动态判断列表长度后再赋值 if len(values) >=5: values[4]= 4 else: values.append(4) print(values) return values# do not change this line! # do not write any code below here test() # do not change this line! # do not remove this line!
内容的提问来源于stack exchange,提问作者Alaa Wael
相关产品推荐
相关产品推荐

