PYTHON:如何创建一个函数来接收变量输入,然后将其发送到另一个函数

时间:2011-03-26 16:11:21

标签: python function new-operator

我正在使用Learn Python the Hard Way并且练习35的额外功劳说简化。我想创建一个函数,它将向用户询问下一个变量,然后将其返回给其他函数。

如果我没有意义......

    def action():
        next = raw_input (">> ")
        return next

    def start():
    print"""
You are in a dark room.
There is a door to your right and left.
Which one do you take?"""

    action()

    if next == "left":
        bear_room()
    elif next == "right":
        cthulu_room()
    else:
        dead("You stumble around the room until you starve.")

当我像这样运行它时,它总是给下一个。

3 个答案:

答案 0 :(得分:2)

您需要在某处存储函数的返回值;一旦它退出,函数下面的整个小缩进命名空间就会与next变量一起消失。我想你真的想要:

next = action()

这样,在函数的小命名空间被破坏的情况下,你仍然可以在程序的顶层找到next的副本。

如果Python的这个功能听起来不必要具有破坏性,请相信我:如果你可以指望每个函数都是它自己的小世界,那么管理复杂程序会容易得多,而不会对你定义的变量进行全局更改! / p>

答案 1 :(得分:1)

您需要将调用结果分配给action()中的start()。例如。 next = action()。当action()执行完毕后,Python不再需要您在其中创建的next变量,因此它会丢弃它。您可以通过将函数的结果赋值给变量(在本例中为函数next中的start())将结果保存在另一个函数中。

快乐黑客!

答案 2 :(得分:1)

我编辑了你的语法。可能它在帮助你

def action():
    nextt = raw_input (">> ")
    return nextt

def start():
    print"""
    You are in a dark room.
    There is a door to your right and left.
    Which one do you take?"""

def bear_room():
    print "You meet the bear..."

def cthulu_room():
    print "you meet the princess"

def dead(message):
    print message

def answ(nextt):
    if nextt == "left":
       bear_room()
    elif nextt == "right":
       cthulu_room()
    else:
       dead("You stumble around the room until you starve.")

start()
ok = action()
answ(ok)