2016-03-19 23 views
0

私は以下のようなコードしている:関数を別の関数にパラメータとして渡すには?

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()さが異なっています。コードをどのように最適化できますか?

答えて

7

可能性のある関数を含む辞書をtextにすることができます。あなたがそれらを呼び出すにしたくないので、関数の後に括弧を入れないでください:

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) 

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

を次に、あなたはあなたの既存のコードを置き換えるためにこれを行うことができます

関連する問題