python 中的高级函数返回低级函数?

High-level function returning low-level function in python?

基本上,我正在制作一个基于文本的 python 游戏并且遇到了障碍。

玩家可以进入战斗,和往常一样,你有可能会死(hp 为 0)。我想做的是打破游戏的主循环,这是几个功能,大约 5-6(从主要到战斗系统功能),分散在不同的文件中。

结构如下:

core()
    while True:
        main()
        game_over()

我想做的是,每当玩家的 hp 变为 0(或什至更低)时,main() 函数就会被破坏,这样玩家就可以被提示退出游戏或 运行 主要功能再次出现。我希望这种情况不同于必须在每个函数后键入 return 和一个值。

game_over 函数提示玩家输入 "new" 并再次启动 main() 因为该函数根本不会做任何事情,或者 "quit" 并且该函数将调用退出() 并退出游戏。

TL:DR - 我怎样才能从一个较小的函数中完全脱离一个函数?试图避免 returns?

的数组

您可以提出异常

例如

def main():
    if condition:
        raise StopIteration
    else:
        return value


while True:
    main()

对于更复杂的逻辑,您可以引发自定义异常并捕获它们:

class GameOver(Exception):
    pass

class Quit(Exception):
    pass

def main():
    if game_over:
        raise GameOver
    if quit:
        raise Quit
    else:
        return value


while True:
    try:
        main()
    except GameOver:
        game_over()
    except Quit:
        break