shakechan 2022-01-24 19:49 采纳率: 100%

# 关于Python局部变量的数据获取

###### 问题相关代码，请勿粘贴截图
``````f, (ax1, ax2, ax3) = plt.subplots(1, 3, figsize=(20,3))

simulation.plt_eps(ax=ax1, outline=False)
ax1.set_title('final permittivity distribution')

optimization.plt_objs(ax=ax2)
ax2.set_yscale('linear')

(_,_,Ez) = simulation.solve_fields()
simulation.plt_abs(ax=ax3, vmax=None)
ax1.set_title('linear field')

plt.show()
``````

``````def plt_objs(self, norm=None, ax=None):
""" Plots objective function vs. iteration"""

iter_range = range(1, len(self.objfn_list) + 1)
if norm == 'field':
obj_scaled = [o/a for o, a in zip(self.objfn_list, self.src_amplitudes)]
ax.set_ylabel('objective function / field')
elif norm == 'power':
obj_scaled = [o/a**2 for o, a in zip(self.objfn_list, self.src_amplitudes)]
ax.set_ylabel('objective function / power')
else:
obj_scaled = self.objfn_list
ax.set_ylabel('objective function')

ax.plot(iter_range,  obj_scaled)
ax.set_xlabel('iteration number')
ax.set_title('optimization results')
return ax

``````

• 写回答

#### 2条回答默认 最新

• 关注

最简单的是在 plt_objs()函数中 return obj_scaled 返回 obj_scaled
调用时obj_scaled = optimization.plt_objs(ax=ax2) 接收返回值

或者是在 plt_objs()函数中用global obj_scaled 把obj_scaled声明为全局变量

``````def plt_objs(self, norm=None, ax=None):
""" Plots objective function vs. iteration"""
global obj_scaled

iter_range = range(1, len(self.objfn_list) + 1)
if norm == 'field':
obj_scaled = [o/a for o, a in zip(self.objfn_list, self.src_amplitudes)]
ax.set_ylabel('objective function / field')
elif norm == 'power':
obj_scaled = [o/a**2 for o, a in zip(self.objfn_list, self.src_amplitudes)]
ax.set_ylabel('objective function / power')
else:
obj_scaled = self.objfn_list
ax.set_ylabel('objective function')

ax.plot(iter_range,  obj_scaled)
ax.set_xlabel('iteration number')
ax.set_title('optimization results')
return ax
``````

调用optimization.plt_objs(ax=ax2)之后
再获取optimization模块中的全局变量obj_scaled
print(optimization.obj_scaled)

如有帮助，请点击我的回答下方的【采纳该答案】按钮帮忙采纳下，谢谢!

本回答被题主选为最佳回答 , 对您是否有帮助呢?
评论 编辑记录

• 系统已结题 2月1日
• 已采纳回答 1月24日
• 创建了问题 1月24日

#### 悬赏问题

• ¥15 ecplise在连接数据库时显示加载驱动成功但是数据库连接失败
• ¥15 visionmaster启动失败，提示为“机器不满足授权而被禁用”
• ¥50 用logisim设计16位单时钟周期cpu
• ¥15 IDEA中圈复杂度如何具体设置
• ¥50 labview采集不了数据
• ¥15 Multisim红外倒车雷达仿真中距离问题
• ¥15 请上面代码做什么处理或什么混淆
• ¥15 英雄联盟自定义房间置顶
• ¥15 W5500网线插上无反应
• ¥15 如何用字典的Key，显示在WPF的xaml中