Мне нужна помощь с кодом здесь, я хотел реализовать шаблон регистра переключателей в python, поэтому, как сказано в каком-то учебном пособии, я могу использовать словарь для этого, но вот моя проблема:
# type can be either create or update or ..
message = { 'create':msg(some_data),
'update':msg(other_data)
# can have more
}
return message(type)
но это не работает для меня, потому что some_data или other_data могут иметь значение None (оно вызывает ошибку, если его нет), а функция msg должна быть простой (я не хочу помещать в нее некоторые условия).
проблема здесь в том, что функция msg () выполняется каждый раз для заполнения слова
в отличие от шаблона случая переключения, который обычно на другом языке программирования не выполняет код в case
, если это не совпадение.
Есть ли другой способ сделать это, или мне просто нужно сделать, если elif ...
Обновление:
спасибо за все ответы, но на самом деле это больше похоже на это
message = { 'create': "blabla %s" % msg(some_data),
'update': "blabla %s" % msg(other_data)
'delete': "blabla %s" % diff(other_data, some_data)
}
так что лямбда здесь не работает и не вызывается одна и та же функция, так что это больше похоже на реальный случай переключения, который мне нужен, и, возможно, мне нужно подумать о другом паттерне.