Как насчет:
status = api_object.status.partition(" ");
try:
action = {
"Downloaded": doA
"Complete": doB
"Installing": doC
}[status[2] or status[0]]
except KeyError:
# unknown status
raise
action();
Использование dict - распространенная идиома в python для замены отсутствующего оператора switch.От doA до doC должны быть вызовы, которые вы вызываете в последней строке.Используя метод partition (sep) и оператор or
, можно легко выбрать правильную часть строки: если она существует, она получает часть за пробелом, иначе - всю строку.
Следует отметить, однако, что кэширование словаря может быть полезно в приложении, критичном к производительности, для безопасного времени для хеширования ключей и построения разборов.1011 * lower () в строке состояния (перед разделом) и поместите ключи в нижний регистр.
В этом конкретном случае требуется break
.Это можно сделать, разрешив вызываемой функции возвращать логическое значение, которое, если True
, вызывает break
или аналогичный подход.