Python子程序DEVICE_ON返回值无法传入CHECK_TEST参数异常
问题原因
- Python函数内定义的变量属于局部作用域,
DEVICE_ON内部赋值的var_colonna_1到var_colonna_8和主程序中的同名变量是完全独立的对象,不会自动同步值到外层。 - 当前主程序调用
DEVICE_ON时没有接收返回值,函数return的结果直接被丢弃,主程序里的var_colonna_x始终是初始化的0值。 - 你贴出的代码分支中仅返回了
var_colonna_2单个值,和设计的8个返回值不符,就算接收返回值也拿不到全部参数。
修复方法
- 调整
DEVICE_ON的返回逻辑,确保所有执行分支都按顺序返回全部8个变量,不要在条件分支中只返回单个值,返回写法参考:
if j == 2: print('shutdown') # Run command. ssh_stdin, ssh_stdout, ssh_stderr = ssh.exec_command(shutdown) var_colonna_2=data_array[i][j] # 给其余var_colonna_1、var_colonna_3~var_colonna_8完成对应赋值 # 所有分支逻辑走完后,统一返回全部8个值 return var_colonna_1, var_colonna_2, var_colonna_3, var_colonna_4, var_colonna_5, var_colonna_6, var_colonna_7, var_colonna_8
- 主程序调用
DEVICE_ON时,用对应数量的变量接收返回结果,不要直接调用后就传参给CHECK_TEST:
# 接收DEVICE_ON返回的8个值 var_colonna_1, var_colonna_2, var_colonna_3, var_colonna_4, var_colonna_5, var_colonna_6, var_colonna_7, var_colonna_8 = DEVICE_ON(ssh, data_array, i, j) # 赋值完成后再调用CHECK_TEST CHECK_TEST(var_colonna_1,var_colonna_2, var_colonna_3, var_colonna_4, var_colonna_5, var_colonna_6, var_colonna_7, var_colonna_8)
- 额外检查:确认
DEVICE_ON所有条件分支都给8个var_colonna_x完成了赋值,避免出现未定义变量报错,或者返回值数量不匹配的问题。
调试参考截图:
内容的提问来源于stack exchange,提问作者Inuyasha84
相关产品推荐
相关产品推荐

