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导入同名对象,会导致命名冲突,实际运行的函数版本可能和你写的不一致。
修正后代码参考
- 删除冗余导入:如果subprogram函数就写在当前运行文件里,直接删掉开头的导入语句即可,避免同名覆盖。
- 调整函数内代码顺序,移除死代码,补全默认返回:
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
- 调整主循环逻辑,用变量接收函数返回值,同时修正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
相关产品推荐
相关产品推荐

