Я сейчас пишу скрипт, который будет извлекать определенную информацию из HTML с помощью dom4j.
Так как Python / Jython не имеет собственного оператора switch , я решил использовать целую кучу операторов if , которые вызывают соответствующий метод, как показано ниже:
if type == 'extractTitle':
extractTitle(dom)
if type == 'extractMetaTags':
extractMetaTags(dom)
Я буду добавлять больше, в зависимости от того, какую информацию я хочу извлечь из HTML, и подумать о том, чтобы использовать словарный подход, который я нашел в другом месте на этом сайте, пример ниже:
{
'extractTitle': extractTitle,
'extractMetaTags': extractMetaTags
}[type](dom)
Я знаю, что каждый раз, когда я запускаю сценарий, словарь будет создаваться, но в то же время, если бы я использовал операторы , если , сценарию пришлось бы проверять их все, пока он не достигнет правильный. Что мне действительно интересно, какой из них работает лучше или вообще лучше использовать?
Обновление: @Brian - Спасибо за отличный ответ. У меня есть вопрос, если какой-либо из методов извлечения требует более одного объекта, например
handle_extractTag(self, dom, anotherObject)
# Do something
Как бы вы внесли соответствующие изменения в метод handle , чтобы реализовать это? Надеюсь, вы понимаете, о чем я:)
Приветствия