如何将函数作为参数传递给另一个函数?

时间:2016-03-19 17:12:11

标签: python python-2.7

我有以下代码:

if text == 'today':
    date1, date2 = dt.today_()
    result, data = ga.get_sessions_today_data(user_id, date1, date2)
    result, data, caption = get_final_caption(result, data, date1, date2, 'hour', 'sessions')
    handle_result(chat_id, result, data, caption)
elif text == 'yesterday':
    date1, date2 = dt.yesterday()
    result, data = ga.get_sessions_today_data(user_id, date1, date2)
    result, data, caption = get_final_caption(result, data, date1, end_date, 'hour', 'sessions')
    handle_result(chat_id, result, data, caption)
...

代码重复多次,只有dt.function()ga.function()不同。我怎样才能优化代码?

1 个答案:

答案 0 :(得分:7)

你可以制作一个字典,其中包含text的每种可能性的函数。不要在函数后面添加括号,因为你不想调用它们:

options = {"today": dt.today_, "yesterday": dt.yesterday} # etc

然后,您可以执行此操作来替换现有代码:

date1, date2 = options[text]() # Get the correct function and call it
result, data = ga.get_sessions_today_data(user_id, date1, date2)
result, data, caption = get_final_caption(result, data, date1, date2, 'hour', 'sessions')
handle_result(chat_id, result, data, caption)