不同功能中的相同变量。 (蟒蛇)

时间:2014-03-07 21:30:17

标签: python function variables constants

新手在这里,我正在撰写LearnPythonTheHardWay前36的“游戏”。

如果我想在一个功能中询问用户名。我怎么能回想起那些人在没有再要求的情况下在所有其他功能中命名,或者再次将它设置为名称?从我理解函数中的变量不会影响其他函数,但如果我想要它呢?

def room_1():
    name = raw_input("What is your name?")
    print "hi %s" % name

def room_7():
    print "Hi %s" % name    

3 个答案:

答案 0 :(得分:3)

两种方式,首先是创建一个类并设置一个名为playername的属性。类似的东西:

class Game(object):
    def __init__(self,playername=None):
        if playername is None: self.playername = raw_input("What's your name? ")
        else: self.playername = playername
        # initialize any other variables here

    def run(self):
        # all your code goes here, and self.playername
        # is always your player's name.

game = Game()
game.run()

另一个是广泛的(并且恰当地!)不赞成。您可以使用全局

global name
name = raw_input("What is your name? ")

现在,只要您不在任何功能中覆盖name,他们就可以调用name并像访问本地变量一样访问它。

编辑:看起来你正在尝试构建一款应该实现Finite State Machine的游戏,这几乎肯定超出了你现在的能力。你可以在没有它的情况下完成它,但代码总是会有“意大利面条”的感觉。 class Game是迈向FSM的第一步,但还有很长的路要走:))

答案 1 :(得分:0)

在询问名称时应将其声明为全局,因此可在其他功能中使用:

def room_1():
    global name
    name = raw_input("What is your name?")
    print "hi %s" % name

def room_7():
    print "Hi %s" % name 

答案 2 :(得分:0)

现在您可以在函数外部定义变量,然后使用global关键字调用它。

通常情况下你会使用一个类来做这类事情,但你最终会到达那里:o)

name = ''

def room_1():
    global name
    name = raw_input("What is your name?")
    print "hi %s" % name

def room_7():
    global name
    print "Hi %s" % name