在多行上尝试 Except:Pass

Try, Except:Pass on multiple lines

我正在为一个名为 Abaqus 的程序编写另一个脚本,该程序在图表上绘制 XY 数据....并且我的部分脚本会根据是否命名为特定名称来更改线条样式....

所以我有一堆不同的曲线名称,如果图表包含该特定名称,我想执行代码来更改样式...例如...

    session.curves[PathNameNew+'_S201-16'].symbolStyle.setValues(show=True)
    session.curves[PathNameNew+'_S201-16'].symbolStyle.setValues(marker=FILLED_DIAMOND)
    session.curves[PathNameNew+'_S201-16'].symbolStyle.setValues(size=2)
    session.curves[PathNameNew+'_S201-16'].symbolStyle.setValues(color='#009afb')
    session.curves[PathNameNew+'_S247-16'].symbolStyle.setValues(show=True)
    session.curves[PathNameNew+'_S247-16'].symbolStyle.setValues(marker=FILLED_DIAMOND)
    session.curves[PathNameNew+'_S247-16'].symbolStyle.setValues(size=2)
    session.curves[PathNameNew+'_S247-16'].symbolStyle.setValues(color='#009afb')
    session.curves[PathNameNew+'_RELEASE'].symbolStyle.setValues(show=True)
    session.curves[PathNameNew+'_RELEASE'].symbolStyle.setValues(marker=FILLED_DIAMOND)
    session.curves[PathNameNew+'_RELEASE'].symbolStyle.setValues(size=2)
    session.curves[PathNameNew+'_RELEASE'].symbolStyle.setValues(color='#009afb')   
    session.curves[PathNameNew+'_S205-18'].lineStyle.setValues(thickness=1)

我有大约 50 种不同样式的不同曲线名称,并不是每次都会使用所有这些曲线,所以我正在考虑使用 Try,except:pass 方法来实现这一点......然而将意味着我必须为每个曲线名称执行此操作...

有没有更好的方法?

你总是可以创建一个闭包函数来为你做这件事:

def my_big_function():
    ...
    def set_symbolstyle_value(key, **kwargs):
        try:
            session.curves[PathNameNew + key].symbolStyle.setValues(**kwargs)
        except MyException:
            do_something()

    set_symbolstyle_value('_S201-16', show=True)
    set_symbolstyle_value('_S201-16', marker=FILLED_DIAMOND)
    ...

功能便宜。不要害怕使用它们。

构建一个元组列表,每个元组包含两个元素 - 曲线名称和参数字典,如下所示:

[('somename',{'color':'blue', 'marker':FILLED_DIAMOND})...]

然后,根据上面的列表,执行以下操作:

for name, par in lst:
    if name in session.curves:
        session.curves[name].symbolStyle.setValues(**par)