У меня есть сценарий, который принимает список метрик в качестве ввода, а затем извлекает эти показатели из базы данных для выполнения различных операций с ними.Вызов различных функций в Python на основе значений в списке
Моя проблема заключается в том, что разные клиенты получают разные подмножества показателей, но я не хочу писать новый блок IF каждый раз, когда мы добавляем нового клиента. Итак, прямо сейчас у меня есть большой блок IF, который вызывает разные функции на основе того, соответствует ли соответствующая метрика в списке. Что является самым элегантным или Pythonic способ справиться с этим?
настройка и функция определения:
clientOne = ['churn','penetration','bounce']
clientTwo = ['engagement','bounce']
def calcChurn(clientId):
churn = cursor.execute(sql to get churn)
[...]
return churn
def calcEngagement(clientId):
engagement = cursor.execute(sql to get engagement)
[...]
return engagement
Imagine три других функций в подобном формате, так что есть одна функции, которая соответствует каждой единственной метрике. Сейчас здесь находится блок кода в скрипте, который принимает список метрик:
def scriptName(client, clientId):
if churn in client:
churn = calcChurn(clientId)
if engagement in client:
engagement = calcEngagement(clientId)
if penetration in client:
[...]
Если вы беспокоитесь о том, что делаете вещи максимально возможными, возможно, вы также захотите использовать стиль [PEP 8] (https://www.python.org/dev/peps/pep-0008/): ' calc_churn' и 'calc_engagement', пробелы после запятых в списках и т. д. – abarnert