переключение регистра в питоне не работает; нужен другой шаблон

Мне нужна помощь с кодом здесь, я хотел реализовать шаблон регистра переключателей в 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 () выполняется каждый раз для заполнения dict в отличие от шаблона регистра переключателя, который обычно на другом языке программирования не выполняет код вcase если это не совпадение.

Есть ли другой способ сделать это, или мне просто нужно сделать, если elif ...

Обновить: спасибо за все ответы, но на самом деле это больше похоже на это

message = { 'create': "blabla %s" % msg(some_data),
            'update': "blabla %s" % msg(other_data)
            'delete': "blabla %s" % diff(other_data, some_data)
           }

так что лямбда не работает здесь, и не та же функция вызывается, так что это больше похоже на реальный случай переключения, который мне нужен, и, возможно, мне нужно подумать о другом паттерне.

Ответы на вопрос(9)

Ваш ответ на вопрос