制作只做一件事的函数

时间:2019-02-25 12:53:49

标签: python

我正在练习只做一件事的编写函数。我陷入下面的功能。用户调用play_games来运行整个程序。理想情况下,它只应调用程序类之一中的play_many_games方法。

但是,如果我也没有添加调用prepare_reports函数的行,那么报告将永远不会得到处理。如果我坚持只拥有能做一件事的功能,该如何“做报告和游戏”?

我们的底线是我们需要一个main函数来完成多项功能(例如,一个既可以进行游戏又可以进行通话报告的主函数)吗?

def play_games(number_of_games):
    games_engine = prepare_reports(number_of_games)
    games_engine.play_many_games(number_of_games)


def prepare_reports(number_of_games):
    report_requests = []
    if number_of_games <= 100:
        report_on_game = GameReport()
        report_requests.append(report_on_game)
    report_on_many_games = ManyGamesReport()
    report_requests.append(report_on_many_games)
    return GamesEngine(*report_requests)

2 个答案:

答案 0 :(得分:2)

具有一个仅执行驱动程序并调用其他功能的主功能, 是仅执行一项操作的功能。我建议您创建一个。

答案 1 :(得分:1)

您可以尝试执行此操作,因为声明games_engine并没有多大意义:

def play_games(number_of_games):
    prepare_reports(number_of_games).play_many_games(number_of_games)

def prepare_reports(number_of_games):
    report_requests = []
    if number_of_games <= 100:
        report_on_game = GameReport()
        report_requests.append(report_on_game)
    report_on_many_games = ManyGamesReport()
    report_requests.append(report_on_many_games)
    return GamesEngine(*report_requests)

但是,从技术上讲,您展示给我们的是仅执行一件事的功能。您会发现,通过声明games_engine = prepare_reports(number_of_games),您只是在使代码更易于阅读。