Python函数返回值无法单独调用,提示变量未定义求助
解决Python函数返回值无法单独访问的问题
问题原因
你遇到的NameError是因为函数内部的cmp_avg、att_avg等变量是局部变量,函数执行完毕后这些变量会被销毁,外部代码根本无法直接访问。而print(qb_stat_filler())能正常输出,是因为你直接打印了函数返回的完整元组,并非访问局部变量。
解决方案
要获取单个返回值用于其他函数,你需要将函数的返回结果赋值给外部变量,有几种方式:
1. 解构赋值(推荐,清晰直观)
直接把返回的元组拆解成对应变量,这样就能直接使用每个变量:
name, team, opp, cmp_avg, att_avg, pyds_avg, ptd_avg, int_avg, qbr_avg = qb_stat_filler() # 现在可以正常使用单个变量 print(cmp_avg) print(att_avg)
2. 忽略不需要的变量
如果只需要其中几个值,用下划线_占位忽略不需要的部分:
# 比如只需要cmp_avg和att_avg _, _, _, cmp_avg, att_avg, _, _, _, _ = qb_stat_filler()
3. 通过索引访问返回元组
把返回值整体赋值给一个变量,再通过索引(从0开始)提取需要的值:
qb_stats = qb_stat_filler() cmp_avg = qb_stats[3] # cmp_avg是返回元组的第4个元素 att_avg = qb_stats[4]
补充:你之前尝试的误区
如果只是在函数外部提前定义cmp_avg = 0这类变量,然后直接调用函数,函数内部的局部变量cmp_avg不会自动赋值给外部变量,必须通过上述方式主动接收函数的返回值才能完成赋值。
代码小修复提示
你的函数代码里有两处语法问题需要修正:
if loc_input == '@':和elif loc_input == 'H':下面的代码块需要缩进(比如4个空格),否则会触发缩进错误;- return语句换行时,需要在换行前加反斜杠,或者把所有返回值用括号包裹,避免语法错误:
# 修正后的return语句 return name, team, opp, cmp_avg, att_avg, pyds_avg, ptd_avg, \ int_avg, qbr_avg # 或者用括号包裹 return (name, team, opp, cmp_avg, att_avg, pyds_avg, ptd_avg, int_avg, qbr_avg)
内容的提问来源于stack exchange,提问作者Chup91
相关产品推荐
相关产品推荐

