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

Python def函数return返回值获取异常问题求助

Python自定义函数返回值外部读取异常排查

核心错误点

  • 作用域规则不匹配:函数内部定义的var_colonna_1、var_colonna_2属于函数局部变量,仅能在subprogram函数内部访问,外部作用域无法直接读取这两个变量。你调用函数时没有用变量接收return的返回值,直接在外部打印var_colonna_1读到的根本不是函数内部的变量,值自然不符合预期。
  • 分支逻辑永远不触发:主循环的j取值范围是range(5, lunghezza_colonna),j从5开始递增,但函数内部仅处理了j==1和j==2两个分支,循环过程中两个判断条件永远不成立,函数不会执行你写的return逻辑,默认返回None。
  • 存在无效死代码:j==1分支里return var_colonna_1之后的print(var_colonna_1)永远不会执行——return语句触发后函数会直接终止运行,后续代码全部跳过。另外原代码里shutdonw X存在拼写错误。
  • 命名覆盖风险:你在当前文件自定义了subprogram函数,开头又写了from subprogram import subprogram导入同名对象,会导致命名冲突,实际运行的函数版本可能和你写的不一致。

修正后代码参考

  1. 删除冗余导入:如果subprogram函数就写在当前运行文件里,直接删掉开头的导入语句即可,避免同名覆盖。
  2. 调整函数内代码顺序,移除死代码,补全默认返回:
def subprogram(ssh, x_off, y_off, data_array, i, j):
    if j == 1:
        print('shutdown X')
        ssh_stdin, ssh_stdout, ssh_stderr = ssh.exec_command(x_off)
        var_colonna_1 = data_array[i][j]
        print(var_colonna_1)
        return var_colonna_1
    
    if j == 2:
        print('shutdown Y')
        ssh_stdin, ssh_stdout, ssh_stderr = ssh.exec_command(y_off)
        var_colonna_2 = data_array[i][j]
        return var_colonna_2
    # 其他j值场景默认返回
    return None
  1. 调整主循环逻辑,用变量接收函数返回值,同时修正j的取值范围匹配分支判断:
var_colonna_1 = 0
var_colonna_2 = 0
# 原range起始值为5永远无法命中j==1、j==2的分支,按实际需求调整起始值
for j in range(1, lunghezza_colonna):
    if data_array[i][j] == 'V':
        res = subprogram(ssh, x_off, y_off, data_array, i, j)
        if j == 1:
            var_colonna_1 = res
        elif j == 2:
            var_colonna_2 = res
print(var_colonna_1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 09:27:09