LaB*_*aux 0 python lookup error-handling try-except
我有下面的代码需要检查是否找到任何对象的可见属性。try- except 块中的每个首字母缩略词函数如果找到则返回一个对象引用,每个都有自己的visible属性。如果未找到任何首字母缩略词对象,我的程序将因调用(例如)DR() 而引发 LookUpError。我觉得必须有一种方法来简化这段代码,这样我就不必指定所有这些单独的 try- except 块,但我无法考虑如何有效地做到这一点。
def detect_planning_workflow_page():
workflow = None
try:
if DR().visible:
workflow = "DR"
except LookupError:
pass
try:
if LL().visible:
workflow = "LL"
except LookupError:
pass
try:
if AZ().visible:
workflow = "AZ"
except LookupError:
pass
try:
if SP().visible:
workflow = "SP"
except LookupError:
pass
try:
if MS().visible:
workflow = "Define Region"
except LookupError:
pass
return workflow
Run Code Online (Sandbox Code Playgroud)
我会使用循环来写这个:
def detect_planning_workflow_page():
for func, workflow in [
(MS, "Define Region"),
(SP, "SP"),
(AZ, "AZ"),
(LL, "LL"),
(DR, "DR"),
]:
try:
if func().visible:
return workflow
except LookupError:
pass
return None
Run Code Online (Sandbox Code Playgroud)
请注意,我颠倒了原始代码的顺序,因为workflow如果多次检查成功,原始代码将继续覆盖,因此最后一个将优先 - 交换顺序并立即返回应该具有相同的效果(除非调用func()其他代码有一个重要的副作用,从您的描述中并不明显)。
| 归档时间: |
|
| 查看次数: |
34 次 |
| 最近记录: |