Ваши главные аргументы против использования фигурных скобок заключаются в том, что они используют дополнительные строки и требуют дополнительного отступов.
Линии (почти) свободны, минимизируя количество строк в вашем коде, не должны быть объективными .
И отступ не зависит от использования скобок. В вашем каскадном «использовании» примера я все еще думаю, что вы должны отступать от них, даже когда вы опускаете фигурные скобки.
В вашем примере вы обнаруживаете нарастающий фронт (штифт идет от низкого до высокого). Падение фронта противоположно, поэтому вы можете запустить отдельный обратный вызов с помощью:
GPIO.add_event_detect(17, GPIO.FALLING, callback=other_callback, bouncetime=600)
Однако я бы предложил вам использовать GPIO Zero вместо RPi. GPIO, как вам может показаться более интуитивным:
from gpiozero import InputDevice
sensor = InputDevice(17)
while True:
sensor.wait_for_active()
print("Fire!")
sensor.wait_for_inactive()
print("No fire")
Вы можете обнаружить, что логика перевернута (говорит «огонь», когда огня нет), и в этом случае используйте InputDevice(17, pull_up=True)
В качестве альтернативы к приведенному выше коду вы можете использовать if sensor.is_active
или использовать механизм обратных вызовов sensor.when_activated = callback
. См. gpiozero docs для получения дополнительной информации.