小问题,主要是为了让我学习最佳实践。如果有更好的方法,请批评指正 :)
基本上,我有多个GPIO输入与一个按钮按下相对应。例如,如果用户按下按钮2,则我从引脚5和引脚6获取高电平值。
所以在我的代码中,我需要将高电平引脚映射到“按钮” ID。
为此,我使用一个二维列表,其中元素的索引将对应于按钮的“ID”。
buttons = [
[],
[PIN_5],
[PIN_5, PIN_6],
[PIN_6],
[PIN_6, PIN_19],
...
]
我正在使用线程循环来检查引脚值,并将高电平的引脚存储在一个新列表中。
因此,一旦按下按钮,新列表将包含高电平引脚。
pins_high = [PIN_5, PIN_6]
所以这就是我最佳实践问题的出处,为了将这些引脚映射到映射列表中的按钮“id”,我使用了一个try except pass的方法
button_pressed = 0
try:
button_pressed = buttons.index(pins_high)
except ValueError:
pass
这是最佳实践吗?在我看来,这是一个漂亮而简洁的解决方案,但是我是否忽略了使用try/ except/ pass可能存在的任何泄漏/影响?
谢谢, 杰米
if
的else:
中一样打印或记录它。except: pass
(或稍微好点的except Exception: pass
)是不可取的,如果try
块很大并且可能以多种方式引发ValueError
,则except ValueError: pass
也会有问题,但这种情况下使用是可以的。 - ShadowRanger