У мене є оператор if-elif-elif-else, в якому 99% часу виконується оператор else:
if something == 'this':
doThis()
elif something == 'that':
doThat()
elif something == 'there':
doThere()
else:
doThisMostOfTheTime()
Ця конструкція робиться багато , але оскільки вона перевершує кожну умову, перш ніж потрапляє на інше, я відчуваю, що це не дуже ефективно, не кажучи вже про пітонічне. З іншого боку, йому потрібно знати, чи виконується будь-яка з цих умов, тому слід все-таки перевірити це.
Хтось знає, чи можна і як це зробити ефективніше, чи це просто найкращий спосіб зробити це?
if not something.startswith("th"): doThisMostOfTheTime()
і зробити інше порівняння в else
пункті.
something
, або подібні порівняння проводяться кілька разів на одне значення?
sort
ті речі, якими ви керуєте, ланцюг if / else ..., так що всі елементи, для яких відповідатиме одна з умов, знаходяться в одному кінці, а всі інші - в іншому? Якщо так, ви можете побачити, чи це швидше / елегантніше чи ні. Але пам’ятайте, що якщо не виникає проблем з продуктивністю, переживати за оптимізацію зарано.