不同函数中的相同变量。(Python)

2024-10-01 11:32:30 发布

您现在位置:Python中文网/ 问答频道 /正文

新手,我现在正在写一个“游戏”在前36的LearnPythonghway。在

如果我想在一个函数中询问用户名。我怎么能回忆起人们在所有其他函数中的名字,而不需要再次请求它,或者再次将它设置为名称?根据我的理解,一个函数中的变量不会影响其他函数,但是如果我希望它影响其他函数呢?在

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

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

Tags: 函数name名称游戏inputrawisdef
3条回答

在请求名称时,应将其声明为全局,以便在其他函数中可用:

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

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

现在,您可以在函数外部定义一个变量,然后用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   

有两种方法,第一种是创建一个类并设置一个名为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()

另一个是广泛的(正确的!)皱着眉头。你可以用一个

^{pr2}$

现在只要不重写任何函数中的name,它们就可以调用name并像访问局部变量一样访问它。在

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

相关问题 更多 >