【发布时间】:2015-07-29 09:29:36
【问题描述】:
我有一个脚本,它将指标列表作为输入,然后从数据库中获取这些指标以执行各种操作。
我的问题是不同的客户端获得不同的指标子集,但我不想每次添加新客户端时都编写新的 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
以类似的格式想象其他三个函数,因此每个唯一指标对应一个函数。现在这是脚本中获取指标列表的代码块:
def scriptName(client, clientId):
if churn in client:
churn = calcChurn(clientId)
if engagement in client:
engagement = calcEngagement(clientId)
if penetration in client:
[...]
【问题讨论】:
-
如果您担心以最 Pythonic 的方式做事,您可能还想使用PEP 8 样式:
calc_churn和calc_engagement,列表中逗号后的空格等。
标签: python list python-2.7