Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 局部变量';门打开';分配前参考_Python_Local Variables - Fatal编程技术网

Python 局部变量';门打开';分配前参考

Python 局部变量';门打开';分配前参考,python,local-variables,Python,Local Variables,我对python非常陌生。我试图通过制作一个基于文本的游戏来学习。 在游戏中,我想要一个变量,door_open,开始为false,但一旦解锁door_open=True。下次调用该函数时,将显示另一条消息 door_open =False def house(): print "The door is locked" plan = raw_input(">") if plan.lower() == 'use key': invent

我对python非常陌生。我试图通过制作一个基于文本的游戏来学习。 在游戏中,我想要一个变量,door_open,开始为false,但一旦解锁door_open=True。下次调用该函数时,将显示另一条消息

door_open =False
def house():    
    print "The door is locked"
    plan = raw_input(">")
    if plan.lower() == 'use key':
            inventory.remove("House Key")
        door_open = True
        print "You are inside"
        start() ## this just returns to the starting point outside
    if door_open == True:
        print "You walk inside"
        exit(0) ## using this until I develop it more 
    else:
        print "Door is locked. Do you want to use your key (Y/N)?"
如果要写入全局范围内的变量,需要使用
global
关键字:

door_open = False
def house():    
    global door_open
    print "The door is locked"
    # ...
另外,请阅读并遵循Python风格指南。例如如果foo==True:,则不应使用
,但如果foo:
则不应使用
如果要写入全局范围内的变量,则需要使用
全局
关键字:

door_open = False
def house():    
    global door_open
    print "The door is locked"
    # ...
另外,请阅读并遵循Python风格指南。例如如果foo==True:
,则不应使用
,但如果foo:

Python在函数中看到变量赋值时,如果变量未标记为(或
非局部变量),则应将该变量视为新的局部变量

因此,Python对待原始代码的方式与

door_open = False
def house():    
    if plan.lower() == 'use key':
        door_open_LOCAL = True   # only assigned here
    if door_open_LOCAL == True:  # whoops, might not be assigned yet!
        pass
(也就是说,局部变量隐藏了全局变量,我通过给局部变量一个完全不同的名称来强调上面的一点。)


另见:

当Python在函数中看到对变量的赋值时,当该变量未标记为(或
非局部
)时,它将该变量视为新的局部变量

因此,Python对待原始代码的方式与

door_open = False
def house():    
    if plan.lower() == 'use key':
        door_open_LOCAL = True   # only assigned here
    if door_open_LOCAL == True:  # whoops, might not be assigned yet!
        pass
(也就是说,局部变量隐藏了全局变量,我通过给局部变量一个完全不同的名称来强调上面的一点。)


另见:


您试图跟踪游戏的状态,但有点迷失在状态记录的位置:

这是使用类的典型情况:

game.py
: 您可以看到类游戏和
main
代码之间的分离,类游戏可以跟踪状态,甚至可以对状态进行一些更改,而
main则可以尝试以某种方式使用游戏

类游戏
是一种想法,你关于游戏状态的笔记是什么样子的

然后在
game=game()


将状态信息存储在设计良好且隔离良好的对象中非常方便,您知道,在哪里可以找到您需要的信息。

您正在尝试跟踪游戏状态,但有点迷失在状态记录的位置:

这是使用类的典型情况:

game.py
: 您可以看到类游戏和
main
代码之间的分离,类游戏可以跟踪状态,甚至可以对状态进行一些更改,而
main则可以尝试以某种方式使用游戏

类游戏
是一种想法,你关于游戏状态的笔记是什么样子的

然后在
game=game()

将状态信息存储在设计良好且隔离良好的对象中非常方便,您知道,在哪里可以找到您需要的信息