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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 04:55:31