Python 2.7如何获取函数内部定义的未对外返回的变量值
Python 2.7 从函数外部获取func_a内部变量a的实现方案
默认情况下Python函数的局部变量仅在函数执行周期内存在,执行完成后会被回收,外部无法直接访问,可通过以下几种常规方式实现需求:
- 方案1:修改函数返回值,同时返回原有结果和变量a(最推荐,符合Python编码规范)
def func_a(var_a): a = 1 b = var_a return b, a # 调用时分别接收返回值 return_b, get_a = func_a(5) print get_a # 输出结果为1
- 方案2:将a挂载为函数对象的属性,Python中函数本身也是可自定义属性的对象
def func_a(var_a): # 把a赋值为函数的属性 func_a.a = 1 b = var_a return b # 必须先调用一次函数完成属性初始化 func_a(5) print func_a.a # 输出结果为1
注意:未调用函数直接访问func_a.a会抛出AttributeError异常
- 方案3:传入可变对象存储内部变量,无需修改函数原有返回结构
def func_a(var_a, store_list): a = 1 # 列表是可变对象,修改会同步到外部的列表对象 store_list[0] = a b = var_a return b # 初始化用于存储的可变列表 store = [None] func_a(5, store) print store[0] # 输出结果为1
不推荐使用inspect模块读取栈帧等非常规黑魔法实现,这类方法兼容性差且不稳定,生产环境易出现不可预知的问题。
内容的提问来源于stack exchange,提问作者user1787277
相关产品推荐
相关产品推荐

