调用另一个函数后如何返回上一个函数?

时间:2015-10-12 20:25:40

标签: python python-2.7

我目前正在研究基于文本的RPG。这很简单,但我还有一些问题,因为我对Python很新。我希望玩家能够调用某个函数,然后在完成之后返回到之前所使用的函数。

fetch_connected_nodes(assembly, starting_node)

如上所示,我希望玩家能够从他们所在的任何特定功能中调用他们的库存。在他们调用该功能后,我希望玩家能够返回他们所在的功能。这个例子代码非常非常简单。以下是我的代码的更详细示例:

def inventory():
    invent = {'a': 1, 'b':2}
    print invent

def room_function():
    input = raw_input("Type [i] for inventory!").lower()
    if input == 'i':
       inventory()

所以我的想法是将装备物品机制与库存系统结合起来。要做到这一点,我需要玩家能够调用他们的库存功能,然后从那里退出该功能并返回他们所处的任何功能。我是否正确设置了它?或者我真的离开这里,可以这么说吗?我能正确理解这些概念吗?谢谢你的帮助。

4 个答案:

答案 0 :(得分:2)

当你调用函数时,在函数执行完毕后,它会在调用它的同一个地方返回结果。 所以,我根本没有看到任何问题 - 你问的想法是默认行为。 你遇到了什么问题?

对于RPG技师来说,OOP真的很棒。

如果您是Python新手,我强烈建议您在Coursera中尝试这些Python课程:

答案 1 :(得分:0)

我建议为所有全局命令编写一个函数并调用它而不是raw_input函数。例如:

def get_command(player_data):
    while True:
        command = raw_input('What would you like to do?')
        if command == 'equip':
           equip(player_data)
        elif command == 'inventory':
           inventory(player_data)
        ...
        else
           return command

然后你可以在你的房间功能中调用它而不是raw_input。如果播放器直接给出由get_command函数处理的命令,它将执行该操作,然后重复,直到它们给出get_command不知道的内容。在这种情况下,房间将获得命令并可以适当地处理它。

def room(player_data):
    print "You're in a room"
    command = get_command(player_data)
    if command == 'leave':
        print "Ok you're gone."
    ...

答案 2 :(得分:0)

我建议你使用'controller'函数作为总线,根据收到的输入调用函数。然后在控制器函数运行后,使用return语句,而不返回任何内容。然后,这将程序返回到调用控制器的函数。

答案 3 :(得分:0)

正如DaneSoul所说,这是默认行为。这是完整性的一个例子。

def function1():
    print 'in function 1'

def function2():
    print 'in function 2'
    function1()
    print 'back in function 2'

function2()
# Output:
#     in function 2
#     in function 1
#     back in function 2